{
  "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": "hr.spec.js",
      "file": "hr.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "HR Management — Access Control",
          "file": "hr.spec.js",
          "line": 17,
          "column": 6,
          "specs": [
            {
              "title": "no session → redirects to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 7330,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    15 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    15 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:20:24",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 24,
                          "line": 20
                        },
                        "snippet": "  18 |   test('no session → redirects to /hub/', async ({ page }) => {\n  19 |     await page.goto(BASE_URL);\n> 20 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n     |                        ^\n  21 |   });\n  22 |\n  23 |   test('with valid session → home screen loads', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 24,
                            "line": 20
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    15 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n\n\n  18 |   test('no session → redirects to /hub/', async ({ page }) => {\n  19 |     await page.goto(BASE_URL);\n> 20 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n     |                        ^\n  21 |   });\n  22 |\n  23 |   test('with valid session → home screen loads', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:20:24"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:45:06.987Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--6659e-session-→-redirects-to-hub--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--6659e-session-→-redirects-to-hub--android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 24,
                        "line": 20
                      }
                    },
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6361,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    16 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    16 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:20:24",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 24,
                          "line": 20
                        },
                        "snippet": "  18 |   test('no session → redirects to /hub/', async ({ page }) => {\n  19 |     await page.goto(BASE_URL);\n> 20 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n     |                        ^\n  21 |   });\n  22 |\n  23 |   test('with valid session → home screen loads', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 24,
                            "line": 20
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mpage\u001b[39m\u001b[2m).\u001b[22mtoHaveURL\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nExpected pattern: \u001b[32m/\\/hub\\//\u001b[39m\nReceived string:  \u001b[31m\"https://srv1111289.hstgr.cloud/hr/\"\u001b[39m\nTimeout: 6000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveURL\" with timeout 6000ms\u001b[22m\n\u001b[2m    16 × unexpected value \"https://srv1111289.hstgr.cloud/hr/\"\u001b[22m\n\n\n  18 |   test('no session → redirects to /hub/', async ({ page }) => {\n  19 |     await page.goto(BASE_URL);\n> 20 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n     |                        ^\n  21 |   });\n  22 |\n  23 |   test('with valid session → home screen loads', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:20:24"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:45:16.485Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--6659e-session-→-redirects-to-hub--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--6659e-session-→-redirects-to-hub--android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 24,
                        "line": 20
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-93f8841e1f49eb7621a4",
              "file": "hr.spec.js",
              "line": 18,
              "column": 3
            },
            {
              "title": "with valid session → home screen loads",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8447,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:26:52",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 52,
                          "line": 26
                        },
                        "snippet": "  24 |     await injectSession(page);\n  25 |     await page.goto(BASE_URL);\n> 26 |     await expect(page.locator('#scr-home.active')).toBeVisible({ timeout: 8000 });\n     |                                                    ^\n  27 |   });\n  28 | });\n  29 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 52,
                            "line": 26
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n\n\n  24 |     await injectSession(page);\n  25 |     await page.goto(BASE_URL);\n> 26 |     await expect(page.locator('#scr-home.active')).toBeVisible({ timeout: 8000 });\n     |                                                    ^\n  27 |   });\n  28 | });\n  29 |\n    at /var/www/360lm/tests/hr.spec.js:26:52"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:45:24.174Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--f09fc-session-→-home-screen-loads-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--f09fc-session-→-home-screen-loads-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 52,
                        "line": 26
                      }
                    },
                    {
                      "workerIndex": 3,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8445,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:26:52",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 52,
                          "line": 26
                        },
                        "snippet": "  24 |     await injectSession(page);\n  25 |     await page.goto(BASE_URL);\n> 26 |     await expect(page.locator('#scr-home.active')).toBeVisible({ timeout: 8000 });\n     |                                                    ^\n  27 |   });\n  28 | });\n  29 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 52,
                            "line": 26
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home.active')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home.active')\u001b[22m\n\n\n  24 |     await injectSession(page);\n  25 |     await page.goto(BASE_URL);\n> 26 |     await expect(page.locator('#scr-home.active')).toBeVisible({ timeout: 8000 });\n     |                                                    ^\n  27 |   });\n  28 | });\n  29 |\n    at /var/www/360lm/tests/hr.spec.js:26:52"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:45:34.045Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--f09fc-session-→-home-screen-loads-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Access--f09fc-session-→-home-screen-loads-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 52,
                        "line": 26
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-a154d0175ca310e5fb89",
              "file": "hr.spec.js",
              "line": 23,
              "column": 3
            },
            {
              "title": "no session → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1945,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:31.308Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-98f1919840e230f3f0a8",
              "file": "hr.spec.js",
              "line": 18,
              "column": 3
            },
            {
              "title": "with valid session → home screen loads",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1347,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:33.789Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-d1caa549fb073e2fb62d",
              "file": "hr.spec.js",
              "line": 23,
              "column": 3
            }
          ]
        },
        {
          "title": "HR Management — User Bar: Topbar Screens",
          "file": "hr.spec.js",
          "line": 30,
          "column": 6,
          "specs": [
            {
              "title": "home topbar shows user name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8384,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:37:66",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 66,
                          "line": 37
                        },
                        "snippet": "  35 |   test('home topbar shows user name', async ({ page }) => {\n  36 |     await page.goto(BASE_URL);\n> 37 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Harish/, { timeout: 8000 });\n     |                                                                  ^\n  38 |   });\n  39 |\n  40 |   test('home topbar has Logout button', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 66,
                            "line": 37
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n\n  35 |   test('home topbar shows user name', async ({ page }) => {\n  36 |     await page.goto(BASE_URL);\n> 37 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Harish/, { timeout: 8000 });\n     |                                                                  ^\n  38 |   });\n  39 |\n  40 |   test('home topbar has Logout button', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:37:66"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:45:43.834Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-38556-home-topbar-shows-user-name-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-38556-home-topbar-shows-user-name-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 66,
                        "line": 37
                      }
                    },
                    {
                      "workerIndex": 5,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8656,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:37:66",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 66,
                          "line": 37
                        },
                        "snippet": "  35 |   test('home topbar shows user name', async ({ page }) => {\n  36 |     await page.goto(BASE_URL);\n> 37 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Harish/, { timeout: 8000 });\n     |                                                                  ^\n  38 |   });\n  39 |\n  40 |   test('home topbar has Logout button', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 66,
                            "line": 37
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n\n  35 |   test('home topbar shows user name', async ({ page }) => {\n  36 |     await page.goto(BASE_URL);\n> 37 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Harish/, { timeout: 8000 });\n     |                                                                  ^\n  38 |   });\n  39 |\n  40 |   test('home topbar has Logout button', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:37:66"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:45:53.740Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-38556-home-topbar-shows-user-name-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-38556-home-topbar-shows-user-name-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 66,
                        "line": 37
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-4dd8bc3fa551f6f2fc0b",
              "file": "hr.spec.js",
              "line": 35,
              "column": 3
            },
            {
              "title": "home topbar has Logout button",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8725,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:42:69",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 69,
                          "line": 42
                        },
                        "snippet": "  40 |   test('home topbar has Logout button', async ({ page }) => {\n  41 |     await page.goto(BASE_URL);\n> 42 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n     |                                                                     ^\n  43 |   });\n  44 |\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 69,
                            "line": 42
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n\n  40 |   test('home topbar has Logout button', async ({ page }) => {\n  41 |     await page.goto(BASE_URL);\n> 42 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n     |                                                                     ^\n  43 |   });\n  44 |\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:42:69"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:46:04.426Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-939ed-me-topbar-has-Logout-button-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-939ed-me-topbar-has-Logout-button-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 69,
                        "line": 42
                      }
                    },
                    {
                      "workerIndex": 7,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8435,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:42:69",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 69,
                          "line": 42
                        },
                        "snippet": "  40 |   test('home topbar has Logout button', async ({ page }) => {\n  41 |     await page.goto(BASE_URL);\n> 42 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n     |                                                                     ^\n  43 |   });\n  44 |\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 69,
                            "line": 42
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n\n  40 |   test('home topbar has Logout button', async ({ page }) => {\n  41 |     await page.goto(BASE_URL);\n> 42 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n     |                                                                     ^\n  43 |   });\n  44 |\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:42:69"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:46:14.672Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-939ed-me-topbar-has-Logout-button-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-939ed-me-topbar-has-Logout-button-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 69,
                        "line": 42
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-0f0747cbdccb5743bbf5",
              "file": "hr.spec.js",
              "line": 40,
              "column": 3
            },
            {
              "title": "logout confirm=dismiss — stays on page",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8573,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:47:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 47
                        },
                        "snippet": "  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n  46 |     await page.goto(BASE_URL);\n> 47 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  48 |     page.on('dialog', d => d.dismiss());\n  49 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  50 |     await expect(page).toHaveURL(BASE_URL);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 47
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n  46 |     await page.goto(BASE_URL);\n> 47 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  48 |     page.on('dialog', d => d.dismiss());\n  49 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  50 |     await expect(page).toHaveURL(BASE_URL);\n    at /var/www/360lm/tests/hr.spec.js:47:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:46:24.567Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-7a41f-irm-dismiss-—-stays-on-page-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-7a41f-irm-dismiss-—-stays-on-page-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 47
                      }
                    },
                    {
                      "workerIndex": 9,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8552,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:47:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 47
                        },
                        "snippet": "  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n  46 |     await page.goto(BASE_URL);\n> 47 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  48 |     page.on('dialog', d => d.dismiss());\n  49 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  50 |     await expect(page).toHaveURL(BASE_URL);"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 47
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  45 |   test('logout confirm=dismiss — stays on page', async ({ page }) => {\n  46 |     await page.goto(BASE_URL);\n> 47 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  48 |     page.on('dialog', d => d.dismiss());\n  49 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  50 |     await expect(page).toHaveURL(BASE_URL);\n    at /var/www/360lm/tests/hr.spec.js:47:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:46:34.491Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-7a41f-irm-dismiss-—-stays-on-page-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-7a41f-irm-dismiss-—-stays-on-page-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 47
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-0efbece8363a26d7b996",
              "file": "hr.spec.js",
              "line": 45,
              "column": 3
            },
            {
              "title": "logout confirm=OK → redirects to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8575,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:55:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 55
                        },
                        "snippet": "  53 |   test('logout confirm=OK → redirects to /hub/', async ({ page }) => {\n  54 |     await page.goto(BASE_URL);\n> 55 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  56 |     page.on('dialog', d => d.accept());\n  57 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  58 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 55
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  53 |   test('logout confirm=OK → redirects to /hub/', async ({ page }) => {\n  54 |     await page.goto(BASE_URL);\n> 55 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  56 |     page.on('dialog', d => d.accept());\n  57 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  58 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n    at /var/www/360lm/tests/hr.spec.js:55:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:46:44.693Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b5315-firm-OK-→-redirects-to-hub--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b5315-firm-OK-→-redirects-to-hub--android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 55
                      }
                    },
                    {
                      "workerIndex": 11,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8547,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:55:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 55
                        },
                        "snippet": "  53 |   test('logout confirm=OK → redirects to /hub/', async ({ page }) => {\n  54 |     await page.goto(BASE_URL);\n> 55 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  56 |     page.on('dialog', d => d.accept());\n  57 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  58 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 55
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  53 |   test('logout confirm=OK → redirects to /hub/', async ({ page }) => {\n  54 |     await page.goto(BASE_URL);\n> 55 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  56 |     page.on('dialog', d => d.accept());\n  57 |     await page.locator('#scr-home .topbar .hub-logout-btn').click();\n  58 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n    at /var/www/360lm/tests/hr.spec.js:55:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:46:54.940Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b5315-firm-OK-→-redirects-to-hub--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b5315-firm-OK-→-redirects-to-hub--android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 55
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-93ab81e3991c7861b699",
              "file": "hr.spec.js",
              "line": 53,
              "column": 3
            },
            {
              "title": "home topbar shows user name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 720,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:35.205Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-7d3c1892ec14e8a7f204",
              "file": "hr.spec.js",
              "line": 35,
              "column": 3
            },
            {
              "title": "home topbar has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 611,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:36.009Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-6cf2e2d98d186fc640e2",
              "file": "hr.spec.js",
              "line": 40,
              "column": 3
            },
            {
              "title": "logout confirm=dismiss — stays on page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 627,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:36.674Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-6723e85d05fa5b06bc6e",
              "file": "hr.spec.js",
              "line": 45,
              "column": 3
            },
            {
              "title": "logout confirm=OK → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1056,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:37.334Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-6bcb167a520971d057aa",
              "file": "hr.spec.js",
              "line": 53,
              "column": 3
            }
          ]
        },
        {
          "title": "HR Management — User Bar: No-Topbar Screens (injected)",
          "file": "hr.spec.js",
          "line": 62,
          "column": 6,
          "specs": [
            {
              "title": "scr-attendance gets a topbar prepended with Hub + Logout",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8671,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:69:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 69
                        },
                        "snippet": "  67 |   test('scr-attendance gets a topbar prepended with Hub + Logout', async ({ page }) => {\n  68 |     await page.goto(BASE_URL);\n> 69 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  70 |     // Navigate to attendance via bottom nav\n  71 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  72 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 69
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  67 |   test('scr-attendance gets a topbar prepended with Hub + Logout', async ({ page }) => {\n  68 |     await page.goto(BASE_URL);\n> 69 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  70 |     // Navigate to attendance via bottom nav\n  71 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  72 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n    at /var/www/360lm/tests/hr.spec.js:69:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:47:05.343Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1c19d-r-prepended-with-Hub-Logout-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1c19d-r-prepended-with-Hub-Logout-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 69
                      }
                    },
                    {
                      "workerIndex": 13,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8669,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:69:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 69
                        },
                        "snippet": "  67 |   test('scr-attendance gets a topbar prepended with Hub + Logout', async ({ page }) => {\n  68 |     await page.goto(BASE_URL);\n> 69 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  70 |     // Navigate to attendance via bottom nav\n  71 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  72 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 69
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  67 |   test('scr-attendance gets a topbar prepended with Hub + Logout', async ({ page }) => {\n  68 |     await page.goto(BASE_URL);\n> 69 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  70 |     // Navigate to attendance via bottom nav\n  71 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  72 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n    at /var/www/360lm/tests/hr.spec.js:69:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:47:15.586Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1c19d-r-prepended-with-Hub-Logout-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1c19d-r-prepended-with-Hub-Logout-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 69
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-7eec289a0151f0a85b50",
              "file": "hr.spec.js",
              "line": 67,
              "column": 3
            },
            {
              "title": "scr-attendance topbar Hub button navigates to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8877,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:80:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 80
                        },
                        "snippet": "  78 |   test('scr-attendance topbar Hub button navigates to /hub/', async ({ page }) => {\n  79 |     await page.goto(BASE_URL);\n> 80 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  81 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  82 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n  83 |     await page.locator('#scr-attendance .topbar .hub-btn').click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 80
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  78 |   test('scr-attendance topbar Hub button navigates to /hub/', async ({ page }) => {\n  79 |     await page.goto(BASE_URL);\n> 80 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  81 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  82 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n  83 |     await page.locator('#scr-attendance .topbar .hub-btn').click();\n    at /var/www/360lm/tests/hr.spec.js:80:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:47:27.021Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1a182-ub-button-navigates-to-hub--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1a182-ub-button-navigates-to-hub--android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 80
                      }
                    },
                    {
                      "workerIndex": 15,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8488,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:80:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 80
                        },
                        "snippet": "  78 |   test('scr-attendance topbar Hub button navigates to /hub/', async ({ page }) => {\n  79 |     await page.goto(BASE_URL);\n> 80 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  81 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  82 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n  83 |     await page.locator('#scr-attendance .topbar .hub-btn').click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 80
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  78 |   test('scr-attendance topbar Hub button navigates to /hub/', async ({ page }) => {\n  79 |     await page.goto(BASE_URL);\n> 80 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n     |                ^\n  81 |     await page.locator('.bnav-item[onclick*=\"attendance\"], .bnav-item:has-text(\"Attendance\")').first().click();\n  82 |     await expect(page.locator('#scr-attendance.active')).toBeVisible({ timeout: 5000 });\n  83 |     await page.locator('#scr-attendance .topbar .hub-btn').click();\n    at /var/www/360lm/tests/hr.spec.js:80:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:47:37.710Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1a182-ub-button-navigates-to-hub--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-1a182-ub-button-navigates-to-hub--android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 80
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-1c46bc3e940f14e12a43",
              "file": "hr.spec.js",
              "line": 78,
              "column": 3
            },
            {
              "title": "scr-attendance gets a topbar prepended with Hub + Logout",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1561,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:38.430Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-f4a105b5880391714503",
              "file": "hr.spec.js",
              "line": 67,
              "column": 3
            },
            {
              "title": "scr-attendance topbar Hub button navigates to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1200,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:40.027Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-ed0ffc73d9c06bd3b6a1",
              "file": "hr.spec.js",
              "line": 78,
              "column": 3
            }
          ]
        },
        {
          "title": "HR Management — User Bar: Employee Role",
          "file": "hr.spec.js",
          "line": 88,
          "column": 6,
          "specs": [
            {
              "title": "employee home topbar shows their name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8507,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:95:66",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 66,
                          "line": 95
                        },
                        "snippet": "  93 |   test('employee home topbar shows their name', async ({ page }) => {\n  94 |     await page.goto(BASE_URL);\n> 95 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Mukesh/, { timeout: 8000 });\n     |                                                                  ^\n  96 |   });\n  97 |\n  98 |   test('employee home topbar has Logout button', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 66,
                            "line": 95
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n\n  93 |   test('employee home topbar shows their name', async ({ page }) => {\n  94 |     await page.goto(BASE_URL);\n> 95 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Mukesh/, { timeout: 8000 });\n     |                                                                  ^\n  96 |   });\n  97 |\n  98 |   test('employee home topbar has Logout button', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:95:66"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:47:47.803Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-977b0-ome-topbar-shows-their-name-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-977b0-ome-topbar-shows-their-name-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 66,
                        "line": 95
                      }
                    },
                    {
                      "workerIndex": 17,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8511,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:95:66",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 66,
                          "line": 95
                        },
                        "snippet": "  93 |   test('employee home topbar shows their name', async ({ page }) => {\n  94 |     await page.goto(BASE_URL);\n> 95 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Mukesh/, { timeout: 8000 });\n     |                                                                  ^\n  96 |   });\n  97 |\n  98 |   test('employee home topbar has Logout button', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 66,
                            "line": 95
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .topbar-user')\nExpected pattern: \u001b[32m/Mukesh/\u001b[39m\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .topbar-user')\u001b[22m\n\n\n  93 |   test('employee home topbar shows their name', async ({ page }) => {\n  94 |     await page.goto(BASE_URL);\n> 95 |     await expect(page.locator('#scr-home .topbar .topbar-user')).toHaveText(/Mukesh/, { timeout: 8000 });\n     |                                                                  ^\n  96 |   });\n  97 |\n  98 |   test('employee home topbar has Logout button', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:95:66"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:47:57.827Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-977b0-ome-topbar-shows-their-name-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-977b0-ome-topbar-shows-their-name-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 66,
                        "line": 95
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-df62e39b02edf42734c3",
              "file": "hr.spec.js",
              "line": 93,
              "column": 3
            },
            {
              "title": "employee home topbar has Logout button",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8605,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:100:69",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 69,
                          "line": 100
                        },
                        "snippet": "   98 |   test('employee home topbar has Logout button', async ({ page }) => {\n   99 |     await page.goto(BASE_URL);\n> 100 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n      |                                                                     ^\n  101 |   });\n  102 | });\n  103 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 69,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n\n   98 |   test('employee home topbar has Logout button', async ({ page }) => {\n   99 |     await page.goto(BASE_URL);\n> 100 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n      |                                                                     ^\n  101 |   });\n  102 | });\n  103 |\n    at /var/www/360lm/tests/hr.spec.js:100:69"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:48:07.811Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b7c29-me-topbar-has-Logout-button-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b7c29-me-topbar-has-Logout-button-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 69,
                        "line": 100
                      }
                    },
                    {
                      "workerIndex": 19,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8541,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:100:69",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 69,
                          "line": 100
                        },
                        "snippet": "   98 |   test('employee home topbar has Logout button', async ({ page }) => {\n   99 |     await page.goto(BASE_URL);\n> 100 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n      |                                                                     ^\n  101 |   });\n  102 | });\n  103 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 69,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#scr-home .topbar .hub-logout-btn')\nExpected: visible\nTimeout: 8000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 8000ms\u001b[22m\n\u001b[2m  - waiting for locator('#scr-home .topbar .hub-logout-btn')\u001b[22m\n\n\n   98 |   test('employee home topbar has Logout button', async ({ page }) => {\n   99 |     await page.goto(BASE_URL);\n> 100 |     await expect(page.locator('#scr-home .topbar .hub-logout-btn')).toBeVisible({ timeout: 8000 });\n      |                                                                     ^\n  101 |   });\n  102 | });\n  103 |\n    at /var/www/360lm/tests/hr.spec.js:100:69"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:48:17.969Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b7c29-me-topbar-has-Logout-button-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-User-Ba-b7c29-me-topbar-has-Logout-button-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 69,
                        "line": 100
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-4882593ca53c335695b3",
              "file": "hr.spec.js",
              "line": 98,
              "column": 3
            },
            {
              "title": "employee home topbar shows their name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 747,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:41.307Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-acfff3368cdaf76cede0",
              "file": "hr.spec.js",
              "line": 93,
              "column": 3
            },
            {
              "title": "employee home topbar has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 789,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:42.100Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-9072c0c4372ea082848b",
              "file": "hr.spec.js",
              "line": 98,
              "column": 3
            }
          ]
        },
        {
          "title": "HR Management — Existing Functionality Unchanged",
          "file": "hr.spec.js",
          "line": 104,
          "column": 6,
          "specs": [
            {
              "title": "bottom nav renders correct items for admin",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8481,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:111:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 111
                        },
                        "snippet": "  109 |   test('bottom nav renders correct items for admin', async ({ page }) => {\n  110 |     await page.goto(BASE_URL);\n> 111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n  113 |   });\n  114 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 111
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  109 |   test('bottom nav renders correct items for admin', async ({ page }) => {\n  110 |     await page.goto(BASE_URL);\n> 111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n  113 |   });\n  114 |\n    at /var/www/360lm/tests/hr.spec.js:111:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:48:27.924Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 111
                      }
                    },
                    {
                      "workerIndex": 21,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8763,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:111:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 111
                        },
                        "snippet": "  109 |   test('bottom nav renders correct items for admin', async ({ page }) => {\n  110 |     await page.goto(BASE_URL);\n> 111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n  113 |   });\n  114 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 111
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  109 |   test('bottom nav renders correct items for admin', async ({ page }) => {\n  110 |     await page.goto(BASE_URL);\n> 111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n  113 |   });\n  114 |\n    at /var/www/360lm/tests/hr.spec.js:111:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:48:38.119Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 111
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-2ce28d43100e8a510f28",
              "file": "hr.spec.js",
              "line": 109,
              "column": 3
            },
            {
              "title": "home content area is populated",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8477,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:117:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 117
                        },
                        "snippet": "  115 |   test('home content area is populated', async ({ page }) => {\n  116 |     await page.goto(BASE_URL);\n> 117 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  118 |     await expect(page.locator('#home-content')).toBeVisible();\n  119 |   });\n  120 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 117
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  115 |   test('home content area is populated', async ({ page }) => {\n  116 |     await page.goto(BASE_URL);\n> 117 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  118 |     await expect(page.locator('#home-content')).toBeVisible();\n  119 |   });\n  120 |\n    at /var/www/360lm/tests/hr.spec.js:117:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:48:48.325Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-7f588-e-content-area-is-populated-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-7f588-e-content-area-is-populated-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 117
                      }
                    },
                    {
                      "workerIndex": 23,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8477,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:117:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 117
                        },
                        "snippet": "  115 |   test('home content area is populated', async ({ page }) => {\n  116 |     await page.goto(BASE_URL);\n> 117 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  118 |     await expect(page.locator('#home-content')).toBeVisible();\n  119 |   });\n  120 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 117
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  115 |   test('home content area is populated', async ({ page }) => {\n  116 |     await page.goto(BASE_URL);\n> 117 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  118 |     await expect(page.locator('#home-content')).toBeVisible();\n  119 |   });\n  120 |\n    at /var/www/360lm/tests/hr.spec.js:117:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:48:57.967Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-7f588-e-content-area-is-populated-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-7f588-e-content-area-is-populated-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 117
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-876327021cf36189da99",
              "file": "hr.spec.js",
              "line": 115,
              "column": 3
            },
            {
              "title": "existing Hub button still works on home topbar",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8524,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:123:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 123
                        },
                        "snippet": "  121 |   test('existing Hub button still works on home topbar', async ({ page }) => {\n  122 |     await page.goto(BASE_URL);\n> 123 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  124 |     // Both existing hub-btn and new logout-btn should coexist in topbar\n  125 |     await expect(page.locator('#scr-home .topbar .hub-btn')).toBeVisible();\n  126 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 123
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  121 |   test('existing Hub button still works on home topbar', async ({ page }) => {\n  122 |     await page.goto(BASE_URL);\n> 123 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  124 |     // Both existing hub-btn and new logout-btn should coexist in topbar\n  125 |     await expect(page.locator('#scr-home .topbar .hub-btn')).toBeVisible();\n  126 |   });\n    at /var/www/360lm/tests/hr.spec.js:123:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:08.013Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-521c3--still-works-on-home-topbar-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-521c3--still-works-on-home-topbar-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 123
                      }
                    },
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 8404,
                      "error": {
                        "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n",
                        "stack": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n    at /var/www/360lm/tests/hr.spec.js:123:16",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 16,
                          "line": 123
                        },
                        "snippet": "  121 |   test('existing Hub button still works on home topbar', async ({ page }) => {\n  122 |     await page.goto(BASE_URL);\n> 123 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  124 |     // Both existing hub-btn and new logout-btn should coexist in topbar\n  125 |     await expect(page.locator('#scr-home .topbar .hub-btn')).toBeVisible();\n  126 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 16,
                            "line": 123
                          },
                          "message": "TimeoutError: page.waitForSelector: Timeout 8000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#scr-home.active') to be visible\u001b[22m\n\n\n  121 |   test('existing Hub button still works on home topbar', async ({ page }) => {\n  122 |     await page.goto(BASE_URL);\n> 123 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n      |                ^\n  124 |     // Both existing hub-btn and new logout-btn should coexist in topbar\n  125 |     await expect(page.locator('#scr-home .topbar .hub-btn')).toBeVisible();\n  126 |   });\n    at /var/www/360lm/tests/hr.spec.js:123:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:49:17.872Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-521c3--still-works-on-home-topbar-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-521c3--still-works-on-home-topbar-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 16,
                        "line": 123
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-0ad0523966278d674a7c",
              "file": "hr.spec.js",
              "line": 121,
              "column": 3
            },
            {
              "title": "bottom nav renders correct items for admin",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1238,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/hr.spec.js:112:46",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 46,
                          "line": 112
                        },
                        "snippet": "  110 |     await page.goto(BASE_URL);\n  111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n> 112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n      |                                              ^\n  113 |   });\n  114 |\n  115 |   test('home content area is populated', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 46,
                            "line": 112
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  110 |     await page.goto(BASE_URL);\n  111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n> 112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n      |                                              ^\n  113 |   });\n  114 |\n  115 |   test('home content area is populated', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:112:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:42.953Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 46,
                        "line": 112
                      }
                    },
                    {
                      "workerIndex": 46,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1063,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/hr.spec.js:112:46",
                        "location": {
                          "file": "/var/www/360lm/tests/hr.spec.js",
                          "column": 46,
                          "line": 112
                        },
                        "snippet": "  110 |     await page.goto(BASE_URL);\n  111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n> 112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n      |                                              ^\n  113 |   });\n  114 |\n  115 |   test('home content area is populated', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/hr.spec.js",
                            "column": 46,
                            "line": 112
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  110 |     await page.goto(BASE_URL);\n  111 |     await page.waitForSelector('#scr-home.active', { timeout: 8000 });\n> 112 |     await expect(page.locator('.bnav-item')).toHaveCount({ minimum: 3 });\n      |                                              ^\n  113 |   });\n  114 |\n  115 |   test('home content area is populated', async ({ page }) => {\n    at /var/www/360lm/tests/hr.spec.js:112:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:54:46.574Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/hr-HR-Management-—-Existin-ee07e-ers-correct-items-for-admin-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/hr.spec.js",
                        "column": 46,
                        "line": 112
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "98264c29bbadd0584463-5b5a17f7b4f7cbc4c543",
              "file": "hr.spec.js",
              "line": 109,
              "column": 3
            },
            {
              "title": "home content area is populated",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 814,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:49.559Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-ea2223456924354025c1",
              "file": "hr.spec.js",
              "line": 115,
              "column": 3
            },
            {
              "title": "existing Hub button still works on home topbar",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 625,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:50.678Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "98264c29bbadd0584463-312c714c805cfe58aacf",
              "file": "hr.spec.js",
              "line": 121,
              "column": 3
            }
          ]
        }
      ]
    },
    {
      "title": "recce.spec.js",
      "file": "recce.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "Branding Recce — Page Load",
          "file": "recce.spec.js",
          "line": 17,
          "column": 6,
          "specs": [
            {
              "title": "no session — page either restricts or loads without crash",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1222,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:27.716Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-1753c18a0885d52c9a8b",
              "file": "recce.spec.js",
              "line": 18,
              "column": 3
            },
            {
              "title": "with hub session — home view renders",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1001,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:29.230Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-4e2ec7a3c80b44ada57c",
              "file": "recce.spec.js",
              "line": 26,
              "column": 3
            },
            {
              "title": "no session — page either restricts or loads without crash",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1256,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:51.396Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-a7868269ce4d683dca11",
              "file": "recce.spec.js",
              "line": 18,
              "column": 3
            },
            {
              "title": "with hub session — home view renders",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1983,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:52.725Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-266a5a3329e21b0c0eb9",
              "file": "recce.spec.js",
              "line": 26,
              "column": 3
            }
          ]
        },
        {
          "title": "Branding Recce — User Bar: Home Hero",
          "file": "recce.spec.js",
          "line": 36,
          "column": 6,
          "specs": [
            {
              "title": "hero user bar is visible and shows name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5998,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:48:23",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 23,
                          "line": 48
                        },
                        "snippet": "  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 23,
                            "line": 48
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n\n  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |\n    at /var/www/360lm/tests/recce.spec.js:48:23"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:30.312Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 23,
                        "line": 48
                      }
                    },
                    {
                      "workerIndex": 27,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5930,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:48:23",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 23,
                          "line": 48
                        },
                        "snippet": "  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 23,
                            "line": 48
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n\n  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |\n    at /var/www/360lm/tests/recce.spec.js:48:23"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:49:37.555Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 23,
                        "line": 48
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-3b116f754df2bfc79ea9",
              "file": "recce.spec.js",
              "line": 41,
              "column": 3
            },
            {
              "title": "hero logout button is visible",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6159,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:56:64",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 64,
                          "line": 56
                        },
                        "snippet": "  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 64,
                            "line": 56
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:56:64"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:44.809Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 64,
                        "line": 56
                      }
                    },
                    {
                      "workerIndex": 29,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5787,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:56:64",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 64,
                          "line": 56
                        },
                        "snippet": "  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 64,
                            "line": 56
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:56:64"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:49:52.258Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 64,
                        "line": 56
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-2e45c589263c40c954ba",
              "file": "recce.spec.js",
              "line": 52,
              "column": 3
            },
            {
              "title": "hero logout click triggers confirm dialog",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30181,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 65
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  63 |     // Dismiss confirm — user stays on page\n  64 |     page.on('dialog', d => d.dismiss());\n> 65 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  66 |     await expect(page).toHaveURL(BASE_URL);\n  67 |   });\n  68 |\n    at /var/www/360lm/tests/recce.spec.js:65:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:49:59.362Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-android-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 31,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30872,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 65
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  63 |     // Dismiss confirm — user stays on page\n  64 |     page.on('dialog', d => d.dismiss());\n> 65 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  66 |     await expect(page).toHaveURL(BASE_URL);\n  67 |   });\n  68 |\n    at /var/www/360lm/tests/recce.spec.js:65:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:50:31.147Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-android-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-c84ac6c2c989e04114b0",
              "file": "recce.spec.js",
              "line": 59,
              "column": 3
            },
            {
              "title": "hero logout confirm=OK clears session and redirects to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30208,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 74
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  72 |     if (!homeActive) { test.skip(); return; }\n  73 |     page.on('dialog', d => d.accept());\n> 74 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  75 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  76 |   });\n  77 | });\n    at /var/www/360lm/tests/recce.spec.js:74:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:51:04.326Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--android-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30425,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 74
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  72 |     if (!homeActive) { test.skip(); return; }\n  73 |     page.on('dialog', d => d.accept());\n> 74 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  75 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  76 |   });\n  77 | });\n    at /var/www/360lm/tests/recce.spec.js:74:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:51:36.007Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--android-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-2b83b2196fb48ab7447d",
              "file": "recce.spec.js",
              "line": 69,
              "column": 3
            },
            {
              "title": "hero user bar is visible and shows name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6297,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:48:23",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 23,
                          "line": 48
                        },
                        "snippet": "  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 23,
                            "line": 48
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n\n  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |\n    at /var/www/360lm/tests/recce.spec.js:48:23"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:54.779Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 23,
                        "line": 48
                      }
                    },
                    {
                      "workerIndex": 48,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 7031,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:48:23",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 23,
                          "line": 48
                        },
                        "snippet": "  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 23,
                            "line": 48
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar')\u001b[22m\n\n\n  46 |     const homeActive = await page.locator('#view-home.active').isVisible().catch(() => false);\n  47 |     if (!homeActive) { test.skip(); return; }\n> 48 |     await expect(bar).toBeVisible();\n     |                       ^\n  49 |     await expect(page.locator('#recce-hero-name')).toHaveText(/Harish/);\n  50 |   });\n  51 |\n    at /var/www/360lm/tests/recce.spec.js:48:23"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:55:05.586Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-eaa9b-r-is-visible-and-shows-name-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 23,
                        "line": 48
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-58d88ba426f52c45704e",
              "file": "recce.spec.js",
              "line": 41,
              "column": 3
            },
            {
              "title": "hero logout button is visible",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 49,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6620,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:56:64",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 64,
                          "line": 56
                        },
                        "snippet": "  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 64,
                            "line": 56
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:56:64"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:55:15.024Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 64,
                        "line": 56
                      }
                    },
                    {
                      "workerIndex": 50,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6737,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:56:64",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 64,
                          "line": 56
                        },
                        "snippet": "  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 64,
                            "line": 56
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#recce-hero-ubar .btn-logout')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  54 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  55 |     if (!homeActive) { test.skip(); return; }\n> 56 |     await expect(page.locator('#recce-hero-ubar .btn-logout')).toBeVisible();\n     |                                                                ^\n  57 |   });\n  58 |\n  59 |   test('hero logout click triggers confirm dialog', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:56:64"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:55:24.284Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-0e7d4-ro-logout-button-is-visible-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 64,
                        "line": 56
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-2a93a72f5cecd24eaf00",
              "file": "recce.spec.js",
              "line": 52,
              "column": 3
            },
            {
              "title": "hero logout click triggers confirm dialog",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 51,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30870,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 65
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  63 |     // Dismiss confirm — user stays on page\n  64 |     page.on('dialog', d => d.dismiss());\n> 65 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  66 |     await expect(page).toHaveURL(BASE_URL);\n  67 |   });\n  68 |\n    at /var/www/360lm/tests/recce.spec.js:65:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:55:33.914Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-desktop-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 52,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30505,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 65
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  63 |     // Dismiss confirm — user stays on page\n  64 |     page.on('dialog', d => d.dismiss());\n> 65 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  66 |     await expect(page).toHaveURL(BASE_URL);\n  67 |   });\n  68 |\n    at /var/www/360lm/tests/recce.spec.js:65:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:56:08.397Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-3f50c-ick-triggers-confirm-dialog-desktop-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-3ab252cafeb05cf7c3f9",
              "file": "recce.spec.js",
              "line": 59,
              "column": 3
            },
            {
              "title": "hero logout confirm=OK clears session and redirects to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 53,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30476,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 74
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  72 |     if (!homeActive) { test.skip(); return; }\n  73 |     page.on('dialog', d => d.accept());\n> 74 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  75 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  76 |   });\n  77 | });\n    at /var/www/360lm/tests/recce.spec.js:74:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:56:41.618Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--desktop-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 54,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30798,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 56,
                            "line": 74
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#recce-hero-ubar .btn-logout')\u001b[22m\n\n\n  72 |     if (!homeActive) { test.skip(); return; }\n  73 |     page.on('dialog', d => d.accept());\n> 74 |     await page.locator('#recce-hero-ubar .btn-logout').click();\n     |                                                        ^\n  75 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  76 |   });\n  77 | });\n    at /var/www/360lm/tests/recce.spec.js:74:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:57:16.123Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-93361-ssion-and-redirects-to-hub--desktop-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-5b6860a7b6f5e5ae8863",
              "file": "recce.spec.js",
              "line": 69,
              "column": 3
            }
          ]
        },
        {
          "title": "Branding Recce — User Bar: .hdr Screens (Settings)",
          "file": "recce.spec.js",
          "line": 79,
          "column": 6,
          "specs": [
            {
              "title": "settings hdr has .hdr-r with Hub and Logout buttons",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 34,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6217,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:90:57",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 57,
                          "line": 90
                        },
                        "snippet": "  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 57,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n\n  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });\n    at /var/www/360lm/tests/recce.spec.js:90:57"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:52:09.217Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 57,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 35,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6846,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:90:57",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 57,
                          "line": 90
                        },
                        "snippet": "  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 57,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n\n  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });\n    at /var/www/360lm/tests/recce.spec.js:90:57"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:52:17.570Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 57,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-1215543a3d59268e4519",
              "file": "recce.spec.js",
              "line": 84,
              "column": 3
            },
            {
              "title": "settings hdr shows user name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 36,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6169,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:100:67",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 67,
                          "line": 100
                        },
                        "snippet": "   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 67,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n\n   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:100:67"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:52:25.805Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 67,
                        "line": 100
                      }
                    },
                    {
                      "workerIndex": 37,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6047,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:100:67",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 67,
                          "line": 100
                        },
                        "snippet": "   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 67,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n\n   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:100:67"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:52:33.721Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 67,
                        "line": 100
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-4ecfec4a680997c03bce",
              "file": "recce.spec.js",
              "line": 95,
              "column": 3
            },
            {
              "title": "settings Hub button navigates to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 38,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30219,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 58,
                            "line": 108
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .btn-hub')\u001b[22m\n\n\n  106 |     if (!homeActive) { test.skip(); return; }\n  107 |     await page.locator('button.icon-btn').click();\n> 108 |     await page.locator('#view-settings .hdr-r .btn-hub').click();\n      |                                                          ^\n  109 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  110 |   });\n  111 | });\n    at /var/www/360lm/tests/recce.spec.js:108:58"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:52:41.327Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--android-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 39,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30199,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 58,
                            "line": 108
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .btn-hub')\u001b[22m\n\n\n  106 |     if (!homeActive) { test.skip(); return; }\n  107 |     await page.locator('button.icon-btn').click();\n> 108 |     await page.locator('#view-settings .hdr-r .btn-hub').click();\n      |                                                          ^\n  109 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  110 |   });\n  111 | });\n    at /var/www/360lm/tests/recce.spec.js:108:58"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:53:13.263Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--android-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-a5cd9da66d9e36c7d594",
              "file": "recce.spec.js",
              "line": 103,
              "column": 3
            },
            {
              "title": "settings hdr has .hdr-r with Hub and Logout buttons",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 55,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6609,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:90:57",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 57,
                          "line": 90
                        },
                        "snippet": "  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 57,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n\n  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });\n    at /var/www/360lm/tests/recce.spec.js:90:57"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:57:48.913Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 57,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 56,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6205,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:90:57",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 57,
                          "line": 90
                        },
                        "snippet": "  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 57,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r')\nExpected: visible\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r')\u001b[22m\n\n\n  88 |     await page.locator('button.icon-btn').click(); // settings gear button\n  89 |     await expect(page.locator('#view-settings.active')).toBeVisible({ timeout: 4000 });\n> 90 |     await expect(page.locator('#view-settings .hdr-r')).toBeVisible();\n     |                                                         ^\n  91 |     await expect(page.locator('#view-settings .hdr-r .btn-hub')).toBeVisible();\n  92 |     await expect(page.locator('#view-settings .hdr-r .btn-logout')).toBeVisible();\n  93 |   });\n    at /var/www/360lm/tests/recce.spec.js:90:57"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:57:56.957Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-5cd91-with-Hub-and-Logout-buttons-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 57,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-f37b8979cfbcbc05b3bb",
              "file": "recce.spec.js",
              "line": 84,
              "column": 3
            },
            {
              "title": "settings hdr shows user name",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 57,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5999,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:100:67",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 67,
                          "line": 100
                        },
                        "snippet": "   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 67,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n\n   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:100:67"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:58:05.437Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 67,
                        "line": 100
                      }
                    },
                    {
                      "workerIndex": 58,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6760,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:100:67",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 67,
                          "line": 100
                        },
                        "snippet": "   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 67,
                            "line": 100
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#view-settings .hdr-r .hdr-user')\nExpected pattern: \u001b[32m/Harish/\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .hdr-user')\u001b[22m\n\n\n   98 |     if (!homeActive) { test.skip(); return; }\n   99 |     await page.locator('button.icon-btn').click();\n> 100 |     await expect(page.locator('#view-settings .hdr-r .hdr-user')).toHaveText(/Harish/);\n      |                                                                   ^\n  101 |   });\n  102 |\n  103 |   test('settings Hub button navigates to /hub/', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:100:67"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:58:13.562Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-bfa62-ettings-hdr-shows-user-name-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 67,
                        "line": 100
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-bd4f83357cb89dbd2163",
              "file": "recce.spec.js",
              "line": 95,
              "column": 3
            },
            {
              "title": "settings Hub button navigates to /hub/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 59,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30436,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 58,
                            "line": 108
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .btn-hub')\u001b[22m\n\n\n  106 |     if (!homeActive) { test.skip(); return; }\n  107 |     await page.locator('button.icon-btn').click();\n> 108 |     await page.locator('#view-settings .hdr-r .btn-hub').click();\n      |                                                          ^\n  109 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  110 |   });\n  111 | });\n    at /var/www/360lm/tests/recce.spec.js:108:58"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:58:22.714Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--desktop-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 60,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30350,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 58,
                            "line": 108
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#view-settings .hdr-r .btn-hub')\u001b[22m\n\n\n  106 |     if (!homeActive) { test.skip(); return; }\n  107 |     await page.locator('button.icon-btn').click();\n> 108 |     await page.locator('#view-settings .hdr-r .btn-hub').click();\n      |                                                          ^\n  109 |     await expect(page).toHaveURL(/\\/hub\\//, { timeout: 6000 });\n  110 |   });\n  111 | });\n    at /var/www/360lm/tests/recce.spec.js:108:58"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:58:54.837Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Use-119df-ub-button-navigates-to-hub--desktop-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-dff1d48d6cb54f10ea4d",
              "file": "recce.spec.js",
              "line": 103,
              "column": 3
            }
          ]
        },
        {
          "title": "Branding Recce — Existing Functionality Unchanged",
          "file": "recce.spec.js",
          "line": 113,
          "column": 6,
          "specs": [
            {
              "title": "stats cards visible on home",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 950,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:53:44.963Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-583c8d69d0547dbfb56d",
              "file": "recce.spec.js",
              "line": 118,
              "column": 3
            },
            {
              "title": "New Recce button visible",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5581,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:129:50",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 50,
                          "line": 129
                        },
                        "snippet": "  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 50,
                            "line": 129
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:129:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:53:46.157Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 50,
                        "line": 129
                      }
                    },
                    {
                      "workerIndex": 41,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5954,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:129:50",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 50,
                          "line": 129
                        },
                        "snippet": "  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 50,
                            "line": 129
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:129:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:53:53.325Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 50,
                        "line": 129
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-57513b2ecd260bc7522a",
              "file": "recce.spec.js",
              "line": 125,
              "column": 3
            },
            {
              "title": "language toggle button visible in hero",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2529,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:00.767Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-d82c8374086879bd627f",
              "file": "recce.spec.js",
              "line": 132,
              "column": 3
            },
            {
              "title": "existing Hub button in hero still works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1432,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:03.509Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-4a8ea58eef21687bc344",
              "file": "recce.spec.js",
              "line": 139,
              "column": 3
            },
            {
              "title": "stats cards visible on home",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 919,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:26.727Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-b8d172515e7502575bed",
              "file": "recce.spec.js",
              "line": 118,
              "column": 3
            },
            {
              "title": "New Recce button visible",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6094,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:129:50",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 50,
                          "line": 129
                        },
                        "snippet": "  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 50,
                            "line": 129
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:129:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:27.937Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 50,
                        "line": 129
                      }
                    },
                    {
                      "workerIndex": 62,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6289,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/recce.spec.js:129:50",
                        "location": {
                          "file": "/var/www/360lm/tests/recce.spec.js",
                          "column": 50,
                          "line": 129
                        },
                        "snippet": "  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/recce.spec.js",
                            "column": 50,
                            "line": 129
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('button.new-btn')\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('button.new-btn')\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"new-btn\" onclick=\"startNewRecce()\">…</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  127 |     const homeActive = await page.locator('#view-home.active').isVisible({ timeout: 8000 }).catch(() => false);\n  128 |     if (!homeActive) { test.skip(); return; }\n> 129 |     await expect(page.locator('button.new-btn')).toBeVisible();\n      |                                                  ^\n  130 |   });\n  131 |\n  132 |   test('language toggle button visible in hero', async ({ page }) => {\n    at /var/www/360lm/tests/recce.spec.js:129:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:59:36.207Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/recce-Branding-Recce-—-Exi-61c73-ed-New-Recce-button-visible-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/recce.spec.js",
                        "column": 50,
                        "line": 129
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-be7d09666b2ed03938df",
              "file": "recce.spec.js",
              "line": 125,
              "column": 3
            },
            {
              "title": "language toggle button visible in hero",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1504,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:46.060Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-d422b9473e63f3982a2e",
              "file": "recce.spec.js",
              "line": 132,
              "column": 3
            },
            {
              "title": "existing Hub button in hero still works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1131,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:48.023Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "bb27ca683ce0a15e9d22-192ed33ae9f0ae180ff9",
              "file": "recce.spec.js",
              "line": 139,
              "column": 3
            }
          ]
        }
      ]
    },
    {
      "title": "stores.spec.js",
      "file": "stores.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "Stores — Page Load",
          "file": "stores.spec.js",
          "line": 18,
          "column": 6,
          "specs": [
            {
              "title": "no session → login screen visible (not redirect to hub)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 620,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:05.077Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-6be34f29784a2ba69480",
              "file": "stores.spec.js",
              "line": 19,
              "column": 3
            },
            {
              "title": "with stored user → home screen visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 646,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:05.730Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-315ee5aaab8ed2d0174f",
              "file": "stores.spec.js",
              "line": 25,
              "column": 3
            },
            {
              "title": "no session → login screen visible (not redirect to hub)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 637,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:49.259Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-6f744547ba3c1f9c59d2",
              "file": "stores.spec.js",
              "line": 19,
              "column": 3
            },
            {
              "title": "with stored user → home screen visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 972,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:49.951Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-d9506cf1142a68c31bb9",
              "file": "stores.spec.js",
              "line": 25,
              "column": 3
            }
          ]
        },
        {
          "title": "Stores — User Bar: Home Screen",
          "file": "stores.spec.js",
          "line": 32,
          "column": 6,
          "specs": [
            {
              "title": "home-user-sub shows user name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 643,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:06.409Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-9428ca519c5ead862b26",
              "file": "stores.spec.js",
              "line": 37,
              "column": 3
            },
            {
              "title": "home hdr has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 742,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:07.108Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-4da037e1189ad6270752",
              "file": "stores.spec.js",
              "line": 43,
              "column": 3
            },
            {
              "title": "logout → shows login screen and clears session",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 833,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:07.925Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-6897d73836eb264a1da0",
              "file": "stores.spec.js",
              "line": 49,
              "column": 3
            },
            {
              "title": "after logout, stores_user removed from localStorage",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 581,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:08.786Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-fea865c7ee09d2d49edd",
              "file": "stores.spec.js",
              "line": 58,
              "column": 3
            },
            {
              "title": "home-user-sub shows user name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1027,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:50.975Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-49d4ad47b556e59e391d",
              "file": "stores.spec.js",
              "line": 37,
              "column": 3
            },
            {
              "title": "home hdr has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1470,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:52.058Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-67586434387bdee2567d",
              "file": "stores.spec.js",
              "line": 43,
              "column": 3
            },
            {
              "title": "logout → shows login screen and clears session",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1285,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:53.657Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-c6188b8a2ede362940c5",
              "file": "stores.spec.js",
              "line": 49,
              "column": 3
            },
            {
              "title": "after logout, stores_user removed from localStorage",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2661,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:55.006Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-5c5d3076d0af90d8ad77",
              "file": "stores.spec.js",
              "line": 58,
              "column": 3
            }
          ]
        },
        {
          "title": "Stores — User Bar: Non-Home Screens",
          "file": "stores.spec.js",
          "line": 68,
          "column": 6,
          "specs": [
            {
              "title": "stock screen hdr has user name span",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 811,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:09.417Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-5d45f4e48aac965099fa",
              "file": "stores.spec.js",
              "line": 73,
              "column": 3
            },
            {
              "title": "stock screen hdr has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 771,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:10.259Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-d47e7c5c29cebf9d54ff",
              "file": "stores.spec.js",
              "line": 81,
              "column": 3
            },
            {
              "title": "logout from non-home screen shows login",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1024,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:11.071Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-427b009ee28fa4a6c369",
              "file": "stores.spec.js",
              "line": 89,
              "column": 3
            },
            {
              "title": "existing Hub button still present on stock screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1742,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:12.118Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-67179e54effac284ca31",
              "file": "stores.spec.js",
              "line": 98,
              "column": 3
            },
            {
              "title": "stock screen hdr has user name span",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2472,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:59:57.837Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-15b26c3afb97d7f1d29d",
              "file": "stores.spec.js",
              "line": 73,
              "column": 3
            },
            {
              "title": "stock screen hdr has Logout button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 6179,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:00.450Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-aeadfb663a48d8e1996f",
              "file": "stores.spec.js",
              "line": 81,
              "column": 3
            },
            {
              "title": "logout from non-home screen shows login",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4894,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:06.805Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-f2bafe0050a2389bcdf7",
              "file": "stores.spec.js",
              "line": 89,
              "column": 3
            },
            {
              "title": "existing Hub button still present on stock screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 3112,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:12.177Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-a97ac33584d859a1c058",
              "file": "stores.spec.js",
              "line": 98,
              "column": 3
            }
          ]
        },
        {
          "title": "Stores — Existing Functionality Unchanged",
          "file": "stores.spec.js",
          "line": 106,
          "column": 6,
          "specs": [
            {
              "title": "login screen has employee selector and PIN pad",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 677,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:13.960Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-528d025e9e5824e54a75",
              "file": "stores.spec.js",
              "line": 107,
              "column": 3
            },
            {
              "title": "bottom nav shows correct tabs for admin user",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 949,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/stores.spec.js:118:44",
                        "location": {
                          "file": "/var/www/360lm/tests/stores.spec.js",
                          "column": 44,
                          "line": 118
                        },
                        "snippet": "  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     await expect(page.locator('.nav-btn')).toHaveCount({ minimum: 4 });\n      |                                            ^\n  119 |   });\n  120 |\n  121 |   test('stock list loads on Stock tab', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/stores.spec.js",
                            "column": 44,
                            "line": 118
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     await expect(page.locator('.nav-btn')).toHaveCount({ minimum: 4 });\n      |                                            ^\n  119 |   });\n  120 |\n  121 |   test('stock list loads on Stock tab', async ({ page }) => {\n    at /var/www/360lm/tests/stores.spec.js:118:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:14.677Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/stores.spec.js",
                        "column": 44,
                        "line": 118
                      }
                    },
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 3863,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/stores.spec.js:118:44",
                        "location": {
                          "file": "/var/www/360lm/tests/stores.spec.js",
                          "column": 44,
                          "line": 118
                        },
                        "snippet": "  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     await expect(page.locator('.nav-btn')).toHaveCount({ minimum: 4 });\n      |                                            ^\n  119 |   });\n  120 |\n  121 |   test('stock list loads on Stock tab', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/stores.spec.js",
                            "column": 44,
                            "line": 118
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     await expect(page.locator('.nav-btn')).toHaveCount({ minimum: 4 });\n      |                                            ^\n  119 |   });\n  120 |\n  121 |   test('stock list loads on Stock tab', async ({ page }) => {\n    at /var/www/360lm/tests/stores.spec.js:118:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T05:54:18.246Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/stores.spec.js",
                        "column": 44,
                        "line": 118
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "26d121da56c5994b87c0-b86960d7f735b3a60919",
              "file": "stores.spec.js",
              "line": 113,
              "column": 3
            },
            {
              "title": "stock list loads on Stock tab",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 44,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1997,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T05:54:25.574Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-0d2608a51c5dc66dba60",
              "file": "stores.spec.js",
              "line": 121,
              "column": 3
            },
            {
              "title": "login screen has employee selector and PIN pad",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1515,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:15.505Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-b893715e37c512038364",
              "file": "stores.spec.js",
              "line": 107,
              "column": 3
            },
            {
              "title": "bottom nav shows correct tabs for admin user",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 2116,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/stores.spec.js:118:44",
                        "location": {
                          "file": "/var/www/360lm/tests/stores.spec.js",
                          "column": 44,
                          "line": 118
                        },
                        "snippet": "  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     const navCount = await page.locator('.nav-btn').count();\n      |                                            ^\n  119 |     expect(navCount).toBeGreaterThanOrEqual(4);\n  120 |   });\n  121 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/stores.spec.js",
                            "column": 44,
                            "line": 118
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     const navCount = await page.locator('.nav-btn').count();\n      |                                            ^\n  119 |     expect(navCount).toBeGreaterThanOrEqual(4);\n  120 |   });\n  121 |\n    at /var/www/360lm/tests/stores.spec.js:118:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:17.133Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/stores.spec.js",
                        "column": 44,
                        "line": 118
                      }
                    },
                    {
                      "workerIndex": 64,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1858,
                      "error": {
                        "message": "Error: locator._expect: expectedNumber: expected float, got object",
                        "stack": "Error: locator._expect: expectedNumber: expected float, got object\n    at /var/www/360lm/tests/stores.spec.js:118:44",
                        "location": {
                          "file": "/var/www/360lm/tests/stores.spec.js",
                          "column": 44,
                          "line": 118
                        },
                        "snippet": "  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     const navCount = await page.locator('.nav-btn').count();\n      |                                            ^\n  119 |     expect(navCount).toBeGreaterThanOrEqual(4);\n  120 |   });\n  121 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/stores.spec.js",
                            "column": 44,
                            "line": 118
                          },
                          "message": "Error: locator._expect: expectedNumber: expected float, got object\n\n  116 |     await page.waitForSelector('#screen-home.active', { timeout: 8000 });\n  117 |     await expect(page.locator('#main-nav')).toBeVisible();\n> 118 |     const navCount = await page.locator('.nav-btn').count();\n      |                                            ^\n  119 |     expect(navCount).toBeGreaterThanOrEqual(4);\n  120 |   });\n  121 |\n    at /var/www/360lm/tests/stores.spec.js:118:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:00:21.983Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/stores-Stores-—-Existing-F-45deb-correct-tabs-for-admin-user-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/stores.spec.js",
                        "column": 44,
                        "line": 118
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "26d121da56c5994b87c0-5dae1faa2ef5b5dc247d",
              "file": "stores.spec.js",
              "line": 113,
              "column": 3
            },
            {
              "title": "stock list loads on Stock tab",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 65,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 3749,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:00:27.882Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "26d121da56c5994b87c0-c96864184a1475b812ea",
              "file": "stores.spec.js",
              "line": 121,
              "column": 3
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-05-20T05:45:05.063Z",
    "duration": 928231.604,
    "expected": 46,
    "skipped": 0,
    "unexpected": 32,
    "flaky": 0
  }
}
