{
  "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": "tour_pg.spec.js",
      "file": "tour_pg.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "Tour Playground — Smoke",
          "file": "tour_pg.spec.js",
          "line": 31,
          "column": 6,
          "specs": [
            {
              "title": "page returns 200",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 584,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:45.387Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-07a7be6c69471b097587",
              "file": "tour_pg.spec.js",
              "line": 32,
              "column": 3
            },
            {
              "title": "manifest.json returns 200",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 210,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.143Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-3663c6956c03edf85c87",
              "file": "tour_pg.spec.js",
              "line": 37,
              "column": 3
            },
            {
              "title": "sample.xlsx is downloadable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 58,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.378Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-a984cd7f10c08f210a94",
              "file": "tour_pg.spec.js",
              "line": 42,
              "column": 3
            },
            {
              "title": "HTML carries tour-pg-v16 SW version",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 26,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.452Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-61b5275978aa5bfc4aaf",
              "file": "tour_pg.spec.js",
              "line": 51,
              "column": 3
            },
            {
              "title": "proxy /health returns ok",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 22,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.494Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-4f4987b0ee72f032f49f",
              "file": "tour_pg.spec.js",
              "line": 59,
              "column": 3
            },
            {
              "title": "page returns 200",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 602,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:58.443Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-9dbe1966c7dd5452b371",
              "file": "tour_pg.spec.js",
              "line": 32,
              "column": 3
            },
            {
              "title": "manifest.json returns 200",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 192,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.232Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-c7fda584a64f77dd8b37",
              "file": "tour_pg.spec.js",
              "line": 37,
              "column": 3
            },
            {
              "title": "sample.xlsx is downloadable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 57,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.448Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-8620fb99767dbe91366c",
              "file": "tour_pg.spec.js",
              "line": 42,
              "column": 3
            },
            {
              "title": "HTML carries tour-pg-v16 SW version",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.517Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-01fc3e03d5d1ba6e2ebf",
              "file": "tour_pg.spec.js",
              "line": 51,
              "column": 3
            },
            {
              "title": "proxy /health returns ok",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 13,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.572Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-c27a1f81f0f1bef71bf0",
              "file": "tour_pg.spec.js",
              "line": 59,
              "column": 3
            }
          ]
        },
        {
          "title": "Tour Playground — HTML structure",
          "file": "tour_pg.spec.js",
          "line": 72,
          "column": 6,
          "specs": [
            {
              "title": "two main screens declared",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.533Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-695c509119fd5d12f8b3",
              "file": "tour_pg.spec.js",
              "line": 80,
              "column": 3
            },
            {
              "title": "upload form widgets present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.576Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-0a8482cda7d5afe32715",
              "file": "tour_pg.spec.js",
              "line": 85,
              "column": 3
            },
            {
              "title": "editor screen widgets present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 7,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.592Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-4aeb9f684d0e10040cef",
              "file": "tour_pg.spec.js",
              "line": 93,
              "column": 3
            },
            {
              "title": "share modal present with 5 actions",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.613Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-e3ac227106e400cac68e",
              "file": "tour_pg.spec.js",
              "line": 109,
              "column": 3
            },
            {
              "title": "mid-tour replan widget present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.632Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-8391bbee5cdba382f02e",
              "file": "tour_pg.spec.js",
              "line": 118,
              "column": 3
            },
            {
              "title": "SortableJS + SheetJS CDN loaded",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.648Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-d3bd809f42cfadf22097",
              "file": "tour_pg.spec.js",
              "line": 124,
              "column": 3
            },
            {
              "title": "Leaflet CDN + inline map widget present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 5,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.661Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-6a6396b44064bf473745",
              "file": "tour_pg.spec.js",
              "line": 129,
              "column": 3
            },
            {
              "title": "two main screens declared",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 9,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.599Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-3efaae47ee3ef653f64c",
              "file": "tour_pg.spec.js",
              "line": 80,
              "column": 3
            },
            {
              "title": "upload form widgets present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.654Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-5c26810bed9cc28fce33",
              "file": "tour_pg.spec.js",
              "line": 85,
              "column": 3
            },
            {
              "title": "editor screen widgets present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 8,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.667Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-a56bef580f604eff9386",
              "file": "tour_pg.spec.js",
              "line": 93,
              "column": 3
            },
            {
              "title": "share modal present with 5 actions",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 4,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.684Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-b3d5bcbc5dc2526d303a",
              "file": "tour_pg.spec.js",
              "line": 109,
              "column": 3
            },
            {
              "title": "mid-tour replan widget present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 3,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.697Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-6dbbc2f246d66bdb483d",
              "file": "tour_pg.spec.js",
              "line": 118,
              "column": 3
            },
            {
              "title": "SortableJS + SheetJS CDN loaded",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.710Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-1e95e7080f03ce35d91c",
              "file": "tour_pg.spec.js",
              "line": 124,
              "column": 3
            },
            {
              "title": "Leaflet CDN + inline map widget present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 6,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.723Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-ac9849b17b955308785e",
              "file": "tour_pg.spec.js",
              "line": 129,
              "column": 3
            }
          ]
        },
        {
          "title": "Tour Playground — Auth",
          "file": "tour_pg.spec.js",
          "line": 143,
          "column": 6,
          "specs": [
            {
              "title": "no session → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 482,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:46.678Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-83dd50fbaa77ebc47a5d",
              "file": "tour_pg.spec.js",
              "line": 144,
              "column": 3
            },
            {
              "title": "valid session → upload screen visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 869,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:47.176Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-ac58e3c45c229c64a5c8",
              "file": "tour_pg.spec.js",
              "line": 153,
              "column": 3
            },
            {
              "title": "user pill shows logged-in name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 848,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:48.066Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-b105e116251a5a974331",
              "file": "tour_pg.spec.js",
              "line": 162,
              "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": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 580,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:59.741Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-8a7b32ab13ba7e650d6d",
              "file": "tour_pg.spec.js",
              "line": 144,
              "column": 3
            },
            {
              "title": "valid session → upload screen visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1389,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:00.343Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-c08ca36371ec8fd17b5d",
              "file": "tour_pg.spec.js",
              "line": 153,
              "column": 3
            },
            {
              "title": "user pill shows logged-in name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1472,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:01.796Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-debfcd19a58dd43fb67b",
              "file": "tour_pg.spec.js",
              "line": 162,
              "column": 3
            }
          ]
        },
        {
          "title": "Tour Playground — Proxy end-to-end",
          "file": "tour_pg.spec.js",
          "line": 173,
          "column": 6,
          "specs": [
            {
              "title": "full optimise + drag-reorder + exclude flow",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2403,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:48.934Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-d9eb7610af698ae1097f",
              "file": "tour_pg.spec.js",
              "line": 174,
              "column": 3
            },
            {
              "title": "matrix + 2-opt path for 14 stops",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 760,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:51.353Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-ae600ef94ad0ea6686b6",
              "file": "tour_pg.spec.js",
              "line": 221,
              "column": 3
            },
            {
              "title": "full optimise + drag-reorder + exclude flow",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2274,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:03.310Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-803599e44c1e6f67a1c1",
              "file": "tour_pg.spec.js",
              "line": 174,
              "column": 3
            },
            {
              "title": "matrix + 2-opt path for 14 stops",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 686,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:05.602Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-68347481273a6865f1ad",
              "file": "tour_pg.spec.js",
              "line": 221,
              "column": 3
            }
          ]
        },
        {
          "title": "Tour Playground — Browser JS state",
          "file": "tour_pg.spec.js",
          "line": 250,
          "column": 6,
          "specs": [
            {
              "title": "clicking Go without Excel shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 983,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:52.126Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-1ad6d74924fbe20b2a74",
              "file": "tour_pg.spec.js",
              "line": 251,
              "column": 3
            },
            {
              "title": "round-trip toggle hides/shows destination input",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1264,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:53.128Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-d37ddfb5b63aa657d1cf",
              "file": "tour_pg.spec.js",
              "line": 259,
              "column": 3
            },
            {
              "title": "full state pipeline via page.evaluate (mimics Excel upload)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1965,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:54.414Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-76a529476034b7654e66",
              "file": "tour_pg.spec.js",
              "line": 272,
              "column": 3
            },
            {
              "title": "toggle include then verify state.stops still has the item",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1094,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:56.394Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-fb5425d4cf28fdd89fa0",
              "file": "tour_pg.spec.js",
              "line": 308,
              "column": 3
            },
            {
              "title": "clicking Go without Excel shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 869,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:06.302Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-b55f22712ed011390d18",
              "file": "tour_pg.spec.js",
              "line": 251,
              "column": 3
            },
            {
              "title": "round-trip toggle hides/shows destination input",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1210,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:07.187Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-2542672225a60b02d394",
              "file": "tour_pg.spec.js",
              "line": 259,
              "column": 3
            },
            {
              "title": "full state pipeline via page.evaluate (mimics Excel upload)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1964,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:08.417Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-ee875d59fbce16fa3a8f",
              "file": "tour_pg.spec.js",
              "line": 272,
              "column": 3
            },
            {
              "title": "toggle include then verify state.stops still has the item",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1161,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:10.407Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-ee0ea69eaa8d3fc3f0d7",
              "file": "tour_pg.spec.js",
              "line": 308,
              "column": 3
            }
          ]
        },
        {
          "title": "Tour Playground — Hub",
          "file": "tour_pg.spec.js",
          "line": 340,
          "column": 6,
          "specs": [
            {
              "title": "PWA is registered in hub.pwa_registry with grants",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 37,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:02:57.516Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-dbd8d78ec13d6ad2657d",
              "file": "tour_pg.spec.js",
              "line": 341,
              "column": 3
            },
            {
              "title": "PWA is registered in hub.pwa_registry with grants",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 30,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-06-05T11:03:11.589Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "c6527e00e898397fb4a5-8827f07514089a554a45",
              "file": "tour_pg.spec.js",
              "line": 341,
              "column": 3
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-06-05T11:02:44.330Z",
    "duration": 27402.505999999998,
    "expected": 44,
    "skipped": 0,
    "unexpected": 0,
    "flaky": 0
  }
}
