{
  "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": "drive_consolidator.spec.js",
      "file": "drive_consolidator.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "Drive Consolidator — Auth / Profile",
          "file": "drive_consolidator.spec.js",
          "line": 150,
          "column": 6,
          "specs": [
            {
              "title": "first launch (no users) shows profile-create screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 736,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:08.814Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-08ea729e51c0ddf89606",
              "file": "drive_consolidator.spec.js",
              "line": 151,
              "column": 3
            },
            {
              "title": "existing users show login screen on load",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 455,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 162
                        },
                        "snippet": "  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 162
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n\n  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:09.752Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 162
                      }
                    },
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 524,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 162
                        },
                        "snippet": "  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 162
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n\n  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:55:11.181Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 162
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-429d541241df4d666b6d",
              "file": "drive_consolidator.spec.js",
              "line": 158,
              "column": 3
            },
            {
              "title": "tap user card → PIN screen appears with user name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 575,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:12.767Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-812c3413246029b205a1",
              "file": "drive_consolidator.spec.js",
              "line": 165,
              "column": 3
            },
            {
              "title": "correct PIN logs in → accounts screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 938,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:13.527Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-21faec9b340c0959f147",
              "file": "drive_consolidator.spec.js",
              "line": 173,
              "column": 3
            },
            {
              "title": "wrong PIN shows error toast, resets dots",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1696,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:14.498Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-fc66dc2c5916fe646d18",
              "file": "drive_consolidator.spec.js",
              "line": 184,
              "column": 3
            },
            {
              "title": "back link from PIN → login screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 571,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:16.236Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-65f9b8397ad580569fd0",
              "file": "drive_consolidator.spec.js",
              "line": 199,
              "column": 3
            },
            {
              "title": "logout button returns to login screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1048,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:16.839Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-3b6439d478d94df7174a",
              "file": "drive_consolidator.spec.js",
              "line": 208,
              "column": 3
            },
            {
              "title": "create profile: no users → profile-create, save → accounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1413,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:17.905Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-e3dbd7557b2817e3d460",
              "file": "drive_consolidator.spec.js",
              "line": 215,
              "column": 3
            },
            {
              "title": "mismatched confirm PIN resets and shows toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1383,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:19.331Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-cbab6ba54cecebb1d72f",
              "file": "drive_consolidator.spec.js",
              "line": 239,
              "column": 3
            },
            {
              "title": "first launch (no users) shows profile-create screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 31,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 633,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:12.483Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-4a5a45c16d495813ef05",
              "file": "drive_consolidator.spec.js",
              "line": 151,
              "column": 3
            },
            {
              "title": "existing users show login screen on load",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 31,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 447,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 162
                        },
                        "snippet": "  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 162
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n\n  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:13.308Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 162
                      }
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 619,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 162
                        },
                        "snippet": "  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 162
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.user-card')\nExpected substring: \u001b[32m\"Test User\"\u001b[39m\nError: strict mode violation: locator('.user-card') resolved to 2 elements:\n    1) <div class=\"user-card\">…</div> aka getByText('TUTest User')\n    2) <div class=\"user-card user-add-card\">…</div> aka getByText('+New Profile')\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.user-card')\u001b[22m\n\n\n  160 |     await page.goto(BASE_URL);\n  161 |     await expect(page.locator('#view-login')).toBeVisible();\n> 162 |     await expect(page.locator('.user-card')).toContainText(TEST_USER_NAME);\n      |                                              ^\n  163 |   });\n  164 |\n  165 |   test('tap user card → PIN screen appears with user name', async ({ page }) => {\n    at /var/www/360lm/tests/drive_consolidator.spec.js:162:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:59:14.709Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-5d22d-s-show-login-screen-on-load-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 162
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-48ca91c16f0c631372ad",
              "file": "drive_consolidator.spec.js",
              "line": 158,
              "column": 3
            },
            {
              "title": "tap user card → PIN screen appears with user name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 822,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:16.898Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-0cf1b9896ccdccfd0ed1",
              "file": "drive_consolidator.spec.js",
              "line": 165,
              "column": 3
            },
            {
              "title": "correct PIN logs in → accounts screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1168,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:18.056Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-6f78449d10d8cdf9dc78",
              "file": "drive_consolidator.spec.js",
              "line": 173,
              "column": 3
            },
            {
              "title": "wrong PIN shows error toast, resets dots",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1812,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:19.306Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-ffb8741d6b30c435b9c9",
              "file": "drive_consolidator.spec.js",
              "line": 184,
              "column": 3
            },
            {
              "title": "back link from PIN → login screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 504,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:21.137Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-a00bcc57220eeb3ef2fd",
              "file": "drive_consolidator.spec.js",
              "line": 199,
              "column": 3
            },
            {
              "title": "logout button returns to login screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1020,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:21.660Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-00e0a7cca81a13ef2230",
              "file": "drive_consolidator.spec.js",
              "line": 208,
              "column": 3
            },
            {
              "title": "create profile: no users → profile-create, save → accounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1323,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:22.695Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-2dd130eb93d9b3ed3612",
              "file": "drive_consolidator.spec.js",
              "line": 215,
              "column": 3
            },
            {
              "title": "mismatched confirm PIN resets and shows toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1713,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:24.038Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-dee18efeac12d403ffbe",
              "file": "drive_consolidator.spec.js",
              "line": 239,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — Setup",
          "file": "drive_consolidator.spec.js",
          "line": 259,
          "column": 6,
          "specs": [
            {
              "title": "no client ID after login → shows setup screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 977,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:20.740Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-42eaebababd07e260ac0",
              "file": "drive_consolidator.spec.js",
              "line": 260,
              "column": 3
            },
            {
              "title": "save client ID → advances to Accounts screen + persists",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 992,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:21.743Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-cb1eca2825861f403038",
              "file": "drive_consolidator.spec.js",
              "line": 270,
              "column": 3
            },
            {
              "title": "empty client ID shows toast, stays on setup",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 973,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:22.759Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-c92f6b3731dcd83bf281",
              "file": "drive_consolidator.spec.js",
              "line": 285,
              "column": 3
            },
            {
              "title": "settings button opens setup with clientId pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 954,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:23.749Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-e23912527d28ba42359f",
              "file": "drive_consolidator.spec.js",
              "line": 297,
              "column": 3
            },
            {
              "title": "client ID persists — re-login after reload goes straight to accounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1563,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:24.727Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-646656d59a20fbe1d213",
              "file": "drive_consolidator.spec.js",
              "line": 304,
              "column": 3
            },
            {
              "title": "no client ID after login → shows setup screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1173,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:25.779Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-a15d08a8d5aa915c48d1",
              "file": "drive_consolidator.spec.js",
              "line": 260,
              "column": 3
            },
            {
              "title": "save client ID → advances to Accounts screen + persists",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1166,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:26.976Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-0a18809750f3ca718795",
              "file": "drive_consolidator.spec.js",
              "line": 270,
              "column": 3
            },
            {
              "title": "empty client ID shows toast, stays on setup",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1272,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:28.160Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-4447d8997433aebed2db",
              "file": "drive_consolidator.spec.js",
              "line": 285,
              "column": 3
            },
            {
              "title": "settings button opens setup with clientId pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 990,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:29.446Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-c070a6e19abab14be2fc",
              "file": "drive_consolidator.spec.js",
              "line": 297,
              "column": 3
            },
            {
              "title": "client ID persists — re-login after reload goes straight to accounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1531,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:30.452Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-e079dc1e560f6010db03",
              "file": "drive_consolidator.spec.js",
              "line": 304,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — Accounts",
          "file": "drive_consolidator.spec.js",
          "line": 316,
          "column": 6,
          "specs": [
            {
              "title": "shows empty state before any account connected",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 939,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:26.315Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-1f43126ad0002e41fc90",
              "file": "drive_consolidator.spec.js",
              "line": 317,
              "column": 3
            },
            {
              "title": "step indicator shows step 1 active",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 942,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:27.272Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-767fa2450985e3b6538a",
              "file": "drive_consolidator.spec.js",
              "line": 323,
              "column": 3
            },
            {
              "title": "connect account → shows in list with name and email",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6016,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 338
                        },
                        "snippet": "  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 338
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:28.232Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 338
                      }
                    },
                    {
                      "workerIndex": 3,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6220,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 338
                        },
                        "snippet": "  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 338
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:55:35.178Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 338
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-d5fa992a947a48b4f9cb",
              "file": "drive_consolidator.spec.js",
              "line": 328,
              "column": 3
            },
            {
              "title": "remove account button removes it from list",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6183,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 354
                        },
                        "snippet": "  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 354
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:42.374Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 354
                      }
                    },
                    {
                      "workerIndex": 5,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6246,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 354
                        },
                        "snippet": "  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 354
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:55:49.469Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 354
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-0d477060dbce21ad5899",
              "file": "drive_consolidator.spec.js",
              "line": 344,
              "column": 3
            },
            {
              "title": "scan button shows toast if no accounts connected",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1189,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:56.753Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-8a7b2144e57ce3fdecab",
              "file": "drive_consolidator.spec.js",
              "line": 360,
              "column": 3
            },
            {
              "title": "shows empty state before any account connected",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 935,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:32.003Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-b97c2649bf416ff12416",
              "file": "drive_consolidator.spec.js",
              "line": 317,
              "column": 3
            },
            {
              "title": "step indicator shows step 1 active",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1235,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:32.971Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-44e942ff5afb5e2911e2",
              "file": "drive_consolidator.spec.js",
              "line": 323,
              "column": 3
            },
            {
              "title": "connect account → shows in list with name and email",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6296,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 338
                        },
                        "snippet": "  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 338
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:34.235Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 338
                      }
                    },
                    {
                      "workerIndex": 34,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6741,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 338
                        },
                        "snippet": "  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 338
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  336 |     await loginAfterGoto(page);\n  337 |     await page.click('#btn-add-acct');\n> 338 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  339 |     await expect(page.locator('#acct-list')).toContainText('alice@gmail.com');\n  340 |     await expect(page.locator('#card-target')).toBeVisible();\n  341 |     await expect(page.locator('#sel-target')).toContainText('Alice');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:338:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:59:41.435Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-f4f6b-in-list-with-name-and-email-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 338
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-319bc6157b74dbf19426",
              "file": "drive_consolidator.spec.js",
              "line": 328,
              "column": 3
            },
            {
              "title": "remove account button removes it from list",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 35,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6568,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 354
                        },
                        "snippet": "  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 354
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:49.360Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 354
                      }
                    },
                    {
                      "workerIndex": 36,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6918,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 354
                        },
                        "snippet": "  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 354
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  352 |     await loginAfterGoto(page);\n  353 |     await page.click('#btn-add-acct');\n> 354 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  355 |     await page.locator('#acct-list button:has-text(\"✕\")').click();\n  356 |     await expect(page.locator('#acct-list')).toContainText('No accounts connected yet');\n  357 |     await expect(page.locator('#card-target')).toBeHidden();\n    at /var/www/360lm/tests/drive_consolidator.spec.js:354:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:59:56.930Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-1e336-button-removes-it-from-list-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 354
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-bbe2fcc08c614f6eb745",
              "file": "drive_consolidator.spec.js",
              "line": 344,
              "column": 3
            },
            {
              "title": "scan button shows toast if no accounts connected",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 37,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2447,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:00:07.745Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-6e59f1a4f670ffc3fba5",
              "file": "drive_consolidator.spec.js",
              "line": 360,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — Scan",
          "file": "drive_consolidator.spec.js",
          "line": 367,
          "column": 6,
          "specs": [
            {
              "title": "scan advances to step 2 and shows file counts",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6040,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 381
                        },
                        "snippet": "  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 381
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:55:58.138Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 381
                      }
                    },
                    {
                      "workerIndex": 7,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6370,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 381
                        },
                        "snippet": "  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 381
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:56:05.184Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 381
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-ff448f7fc85c7cbcddf8",
              "file": "drive_consolidator.spec.js",
              "line": 368,
              "column": 3
            },
            {
              "title": "scan with 0 files shows count 0",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6362,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 399
                        },
                        "snippet": "  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 399
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:56:12.617Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 399
                      }
                    },
                    {
                      "workerIndex": 9,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6316,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 399
                        },
                        "snippet": "  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 399
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:56:20.131Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 399
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-36d952270d9d140e0b22",
              "file": "drive_consolidator.spec.js",
              "line": 389,
              "column": 3
            },
            {
              "title": "scan advances to step 2 and shows file counts",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 37,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6643,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 381
                        },
                        "snippet": "  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 381
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:00:10.904Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 381
                      }
                    },
                    {
                      "workerIndex": 38,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6640,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 381
                        },
                        "snippet": "  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 381
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  379 |     await loginAfterGoto(page);\n  380 |     await page.click('#btn-add-acct');\n> 381 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  382 |     await page.click('#btn-start-scan');\n  383 |     await expect(page.locator('#view-scan')).toBeVisible();\n  384 |     await expect(page.locator('.step[data-s=\"2\"]')).toHaveClass(/active/);\n    at /var/www/360lm/tests/drive_consolidator.spec.js:381:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:00:18.944Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-7e10b-tep-2-and-shows-file-counts-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 381
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-19817f5b3381da9970bd",
              "file": "drive_consolidator.spec.js",
              "line": 368,
              "column": 3
            },
            {
              "title": "scan with 0 files shows count 0",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 39,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6547,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 399
                        },
                        "snippet": "  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 399
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:00:26.752Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 399
                      }
                    },
                    {
                      "workerIndex": 40,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6455,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 399
                        },
                        "snippet": "  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 399
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  397 |     await loginAfterGoto(page);\n  398 |     await page.click('#btn-add-acct');\n> 399 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  400 |     await page.click('#btn-start-scan');\n  401 |     await expect(page.locator('#scan-done-row')).toBeVisible({ timeout: 10000 });\n  402 |     await expect(page.locator('#scan-total')).toContainText('0 files');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:399:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:00:34.452Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6fcbe--with-0-files-shows-count-0-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 399
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-da93ba226bd8ed9fea8b",
              "file": "drive_consolidator.spec.js",
              "line": 389,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — Duplicates",
          "file": "drive_consolidator.spec.js",
          "line": 406,
          "column": 6,
          "specs": [
            {
              "title": "no duplicates — shows clean message",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6525,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:56:27.473Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 11,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6505,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:56:35.165Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-c4b6938ff8f71e66cfb0",
              "file": "drive_consolidator.spec.js",
              "line": 430,
              "column": 3
            },
            {
              "title": "exact MD5 duplicates appear as EXACT groups",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6711,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:56:42.745Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 13,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6525,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:56:50.617Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-eb1e6d21f062f7b6e74f",
              "file": "drive_consolidator.spec.js",
              "line": 440,
              "column": 3
            },
            {
              "title": "expanding a dup group shows file rows",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6553,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:56:58.334Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 15,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6851,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:57:06.398Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-371f92aa94445062cc0e",
              "file": "drive_consolidator.spec.js",
              "line": 452,
              "column": 3
            },
            {
              "title": "auto-keep best sets first file to keep, rest to trash",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6614,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:57:14.642Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 17,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 7182,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:57:22.920Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-383da5b947335c2c5594",
              "file": "drive_consolidator.spec.js",
              "line": 463,
              "column": 3
            },
            {
              "title": "skip all button sets all actions to skip",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6616,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:57:31.365Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 19,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6546,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:57:39.110Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-1d8ddd955a9493cb1c09",
              "file": "drive_consolidator.spec.js",
              "line": 476,
              "column": 3
            },
            {
              "title": "no duplicates — shows clean message",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 41,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6784,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:00:42.109Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6792,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:435:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:00:50.085Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-ab0ce-cates-—-shows-clean-message-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-8219dca1453063d83e37",
              "file": "drive_consolidator.spec.js",
              "line": 430,
              "column": 3
            },
            {
              "title": "exact MD5 duplicates appear as EXACT groups",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6635,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:00:58.023Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 44,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6613,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:445:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:01:05.874Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6f7ae-ates-appear-as-EXACT-groups-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-93f9cb22297434d90ac0",
              "file": "drive_consolidator.spec.js",
              "line": 440,
              "column": 3
            },
            {
              "title": "expanding a dup group shows file rows",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6717,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:01:13.590Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 46,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6890,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:457:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:01:21.629Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-07b56-a-dup-group-shows-file-rows-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-40d4dbb700b819163e7a",
              "file": "drive_consolidator.spec.js",
              "line": 452,
              "column": 3
            },
            {
              "title": "auto-keep best sets first file to keep, rest to trash",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6857,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:01:29.865Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 48,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6798,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:468:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:01:38.322Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94ca9--file-to-keep-rest-to-trash-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-56878d573d234042932d",
              "file": "drive_consolidator.spec.js",
              "line": 463,
              "column": 3
            },
            {
              "title": "skip all button sets all actions to skip",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 49,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6776,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:01:46.633Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    },
                    {
                      "workerIndex": 50,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 7230,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 420
                        },
                        "snippet": "  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 420
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  418 |     await loginAfterGoto(page);\n  419 |     await connectNextAccount(page); // Alice (accounts[0])\n> 420 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  421 |     await connectNextAccount(page); // Bob   (accounts[1])\n  422 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  423 |     await page.click('#btn-start-scan');\n    at goToDedup (/var/www/360lm/tests/drive_consolidator.spec.js:420:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:481:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:01:54.720Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-573c7-on-sets-all-actions-to-skip-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 420
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-8c15b8995e8c6dacd6ff",
              "file": "drive_consolidator.spec.js",
              "line": 476,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — Transfer",
          "file": "drive_consolidator.spec.js",
          "line": 490,
          "column": 6,
          "specs": [
            {
              "title": "transfer screen shows step 4 active",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6671,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:57:46.877Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 21,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6813,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:57:54.711Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-78494384895e3b02de47",
              "file": "drive_consolidator.spec.js",
              "line": 519,
              "column": 3
            },
            {
              "title": "progress bar reaches 100% after transfer completes",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6820,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:58:03.436Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 23,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6540,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:58:11.300Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-0db53b0140e7e9f4b8c3",
              "file": "drive_consolidator.spec.js",
              "line": 524,
              "column": 3
            },
            {
              "title": "summary card shows copied count after completion",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6568,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:58:18.852Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6506,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:58:26.534Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-077aefdd015ff4961e93",
              "file": "drive_consolidator.spec.js",
              "line": 530,
              "column": 3
            },
            {
              "title": "start over button returns to accounts view",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6582,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:58:34.115Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 27,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6551,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:58:41.755Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-060de8ad787e1964c80c",
              "file": "drive_consolidator.spec.js",
              "line": 537,
              "column": 3
            },
            {
              "title": "transfer already-in-target file → skipped",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6669,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 562
                        },
                        "snippet": "  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 562
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:58:49.476Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 562
                      }
                    },
                    {
                      "workerIndex": 29,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6840,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 562
                        },
                        "snippet": "  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 562
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T07:58:57.290Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 562
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-4b25bf2491736bee18b0",
              "file": "drive_consolidator.spec.js",
              "line": 545,
              "column": 3
            },
            {
              "title": "transfer screen shows step 4 active",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 51,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6671,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:02:03.686Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 52,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6623,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:520:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:02:11.439Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-94bd7--screen-shows-step-4-active-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-8587708fd4f9d8176222",
              "file": "drive_consolidator.spec.js",
              "line": 519,
              "column": 3
            },
            {
              "title": "progress bar reaches 100% after transfer completes",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 53,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6687,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:02:19.302Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 54,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6499,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:525:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:02:27.048Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-6050e-00-after-transfer-completes-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-ee476e51e247fc608f4b",
              "file": "drive_consolidator.spec.js",
              "line": 524,
              "column": 3
            },
            {
              "title": "summary card shows copied count after completion",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 55,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6537,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:02:34.628Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 56,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6604,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:531:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:02:42.165Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-edaaf-pied-count-after-completion-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-0d9e64fe5b0fade12b71",
              "file": "drive_consolidator.spec.js",
              "line": 530,
              "column": 3
            },
            {
              "title": "start over button returns to accounts view",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 57,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6517,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:02:49.802Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    },
                    {
                      "workerIndex": 58,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6539,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 507
                        },
                        "snippet": "  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 507
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    14 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  505 |     await loginAfterGoto(page);\n  506 |     await connectNextAccount(page); // Alice (accounts[0])\n> 507 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  508 |     await connectNextAccount(page); // Bob   (accounts[1])\n  509 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  510 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at goToTransferWithFiles (/var/www/360lm/tests/drive_consolidator.spec.js:507:46)\n    at /var/www/360lm/tests/drive_consolidator.spec.js:538:5"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:02:57.357Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-c5122-on-returns-to-accounts-view-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 507
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-93cd4df9a3e55e0e8d78",
              "file": "drive_consolidator.spec.js",
              "line": 537,
              "column": 3
            },
            {
              "title": "transfer already-in-target file → skipped",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 59,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6659,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 562
                        },
                        "snippet": "  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 562
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:05.056Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome/test-failed-2.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 562
                      }
                    },
                    {
                      "workerIndex": 60,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6444,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46",
                        "location": {
                          "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                          "column": 46,
                          "line": 562
                        },
                        "snippet": "  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                            "column": 46,
                            "line": 562
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#acct-list')\nExpected substring: \u001b[32m\"Alice\"\u001b[39m\nReceived string:    \u001b[31m\"No accounts connected yet.\"\u001b[39m\nTimeout: 5000ms\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#acct-list')\u001b[22m\n\u001b[2m    13 × locator resolved to <div id=\"acct-list\">…</div>\u001b[22m\n\u001b[2m       - unexpected value \"No accounts connected yet.\"\u001b[22m\n\n\n  560 |     await loginAfterGoto(page);\n  561 |     await connectNextAccount(page);\n> 562 |     await expect(page.locator('#acct-list')).toContainText('Alice', { timeout: 5000 });\n      |                                              ^\n  563 |     await connectNextAccount(page);\n  564 |     await expect(page.locator('#acct-list')).toContainText('Bob', { timeout: 5000 });\n  565 |     await page.selectOption('#sel-target', 'bob@gmail.com');\n    at /var/www/360lm/tests/drive_consolidator.spec.js:562:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-06-29T08:03:12.797Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome-retry1/test-failed-2.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/drive_consolidator-Drive-C-0bda1-dy-in-target-file-→-skipped-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/drive_consolidator.spec.js",
                        "column": 46,
                        "line": 562
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "a6ab13040c0baac167d8-2fd505e9b119c1181b94",
              "file": "drive_consolidator.spec.js",
              "line": 545,
              "column": 3
            }
          ]
        },
        {
          "title": "Drive Consolidator — PWA / SW",
          "file": "drive_consolidator.spec.js",
          "line": 576,
          "column": 6,
          "specs": [
            {
              "title": "manifest is reachable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 284,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:05.426Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-7e71653b70c4dc6cffa3",
              "file": "drive_consolidator.spec.js",
              "line": 577,
              "column": 3
            },
            {
              "title": "sw.js is served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 266,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:05.928Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-cb61ae1e74f512a3e2eb",
              "file": "drive_consolidator.spec.js",
              "line": 585,
              "column": 3
            },
            {
              "title": "icons are served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 175,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:06.223Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-249c4e3a9205e738bb0d",
              "file": "drive_consolidator.spec.js",
              "line": 590,
              "column": 3
            },
            {
              "title": "service worker registers without error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2237,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:06.425Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-4c515f97e7e4332012e5",
              "file": "drive_consolidator.spec.js",
              "line": 597,
              "column": 3
            },
            {
              "title": "page loads while offline after first visit (SW cache)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2775,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T07:59:08.694Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-6770466834ad744d8b3d",
              "file": "drive_consolidator.spec.js",
              "line": 606,
              "column": 3
            },
            {
              "title": "manifest is reachable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 363,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:20.423Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-9ba9ec8cd56ce3befc76",
              "file": "drive_consolidator.spec.js",
              "line": 577,
              "column": 3
            },
            {
              "title": "sw.js is served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 221,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:21.033Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-a8de2b9a411b43e4952e",
              "file": "drive_consolidator.spec.js",
              "line": 585,
              "column": 3
            },
            {
              "title": "icons are served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 234,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:21.287Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-621efda937b699ff9e9c",
              "file": "drive_consolidator.spec.js",
              "line": 590,
              "column": 3
            },
            {
              "title": "service worker registers without error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2163,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:21.548Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-a2cbaf5de2edba4e769a",
              "file": "drive_consolidator.spec.js",
              "line": 597,
              "column": 3
            },
            {
              "title": "page loads while offline after first visit (SW cache)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2808,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-29T08:03:23.737Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "a6ab13040c0baac167d8-64b20c6f158addc13ce1",
              "file": "drive_consolidator.spec.js",
              "line": 606,
              "column": 3
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-06-29T07:55:07.422Z",
    "duration": 499259.47000000003,
    "expected": 42,
    "skipped": 0,
    "unexpected": 30,
    "flaky": 0
  }
}
