{
  "config": {
    "argv": [
      "/usr/bin/node",
      "/app/node_modules/.bin/playwright",
      "test",
      "--project=ui",
      "--output=/workspace/artifacts/8d90b0d/news-preview/test-output"
    ],
    "configFile": "/app/playwright.config.ts",
    "rootDir": "/app",
    "failOnFlakyTests": false,
    "forbidOnly": false,
    "fullyParallel": false,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 3
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/workspace/artifacts/8d90b0d/news-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 3
        },
        "id": "ui",
        "name": "ui",
        "testDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/workspace/artifacts/8d90b0d/news-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 3
        },
        "id": "api",
        "name": "api",
        "testDir": "/app/tests/api",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "filteredProjects": [
      {
        "grep": {},
        "grepInvert": null,
        "outputDir": "/workspace/artifacts/8d90b0d/news-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 3
        },
        "name": "ui",
        "testDir": "/app/tests/ui",
        "snapshotDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000,
        "use": {
          "browserName": "chromium",
          "baseURL": "http://preview-news-elect-info.electinfo.svc.cluster.local",
          "extraHTTPHeaders": {},
          "screenshot": "on",
          "video": "on-first-retry",
          "trace": "on-first-retry"
        },
        "dependencies": [],
        "ignoreSnapshots": false,
        "__projectId": "ui"
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/8d90b0d/news-preview/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/8d90b0d/news-preview/reports/results.json"
        }
      ],
      [
        "list",
        null
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "default",
    "updateSourceMethod": "patch",
    "version": "1.64.1",
    "workers": 32,
    "webServer": null
  },
  "suites": [
    {
      "title": "tests/ui/digest.spec.ts",
      "file": "tests/ui/digest.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "signed-out digest prompts through shared sign-in, without account/feed reads",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 234,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.215Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-signed-out-digest-p-5e2c3--without-account-feed-reads-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-468afedea331e4aa8ecf",
          "file": "tests/ui/digest.spec.ts",
          "line": 47,
          "column": 5
        },
        {
          "title": "registered non-premium account gets merged follows, paging and per-entity filters",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 378,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.632Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-registered-non-prem-0b8a5-ging-and-per-entity-filters-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-c9fc57140dddc695d220",
          "file": "tests/ui/digest.spec.ts",
          "line": 61,
          "column": 5
        },
        {
          "title": "unfollow uses DELETE + CSRF header, refreshes filter and never requests a global empty feed",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 363,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.025Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-unfollow-uses-DELET-be7d9-equests-a-global-empty-feed-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-b3f88a233df38223f5e0",
          "file": "tests/ui/digest.spec.ts",
          "line": 81,
          "column": 5
        },
        {
          "title": "empty account makes no news request and defaults email to Off",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 149,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.398Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-empty-account-makes-d9843-t-and-defaults-email-to-Off-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-2a9e5035c95d5ed1b072",
          "file": "tests/ui/digest.spec.ts",
          "line": 97,
          "column": 5
        },
        {
          "title": "email supports hourly, daily, weekly and off via PUT with CSRF header",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 406,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.558Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-email-supports-hour-cb13e-ff-via-PUT-with-CSRF-header-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-fbbd5b96c17dbcfda9cd",
          "file": "tests/ui/digest.spec.ts",
          "line": 105,
          "column": 5
        },
        {
          "title": "old backend rejecting hourly restores previous setting and allows retry",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 291,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.976Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-old-backend-rejecti-9c157-us-setting-and-allows-retry-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-28497bba7226a538208f",
          "file": "tests/ui/digest.spec.ts",
          "line": 116,
          "column": 5
        },
        {
          "title": "Digest member control navigates instead of opening modal",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 254,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:25.280Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-Digest-member-contr-b0274-es-instead-of-opening-modal-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-32c3b928304c860c132b",
          "file": "tests/ui/digest.spec.ts",
          "line": 128,
          "column": 5
        },
        {
          "title": "account failure is recoverable and never leaks global news",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 152,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:25.547Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-account-failure-is--075cd-and-never-leaks-global-news-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-61e69f241e877a9940b8",
          "file": "tests/ui/digest.spec.ts",
          "line": 137,
          "column": 5
        },
        {
          "title": "digest fits a narrow phone and keyboard filter interaction works",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 147,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:25.707Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-digest-fits-a-narro-638fe-rd-filter-interaction-works-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-b2932b1a57953f77190c",
          "file": "tests/ui/digest.spec.ts",
          "line": 146,
          "column": 5
        },
        {
          "title": "expired account session shows sign-in rather than private digest",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 166,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:25.868Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-expired-account-ses-5b8a1--rather-than-private-digest-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-725fbcb6aa9be0990e9a",
          "file": "tests/ui/digest.spec.ts",
          "line": 157,
          "column": 5
        },
        {
          "title": "failed pagination can retry without duplicating existing articles",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 298,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:26.050Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-failed-pagination-c-38ff3-plicating-existing-articles-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-54b2a1d77c2e9a96be0b",
          "file": "tests/ui/digest.spec.ts",
          "line": 166,
          "column": 5
        },
        {
          "title": "late previous-filter response cannot overwrite the active entity feed",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 253,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:26.364Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/digest-late-previous-filte-3d92f-rite-the-active-entity-feed-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "d0211ee6f8b93cb5cb5e-6d9085aa012a034a65b1",
          "file": "tests/ui/digest.spec.ts",
          "line": 182,
          "column": 5
        }
      ]
    },
    {
      "title": "tests/ui/identity.spec.ts",
      "file": "tests/ui/identity.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "chips carry escaped canonical metadata while keeping existing profile links",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 206,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.230Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-chips-carry-escap-d1133-ping-existing-profile-links-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-247138a706ff5c09bd8f",
          "file": "tests/ui/identity.spec.ts",
          "line": 19,
          "column": 5
        },
        {
          "title": "FEC-code entity URL exposes only the API-resolved UUID to follow consumers",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 141,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.602Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-FEC-code-entity-U-3e41b-ed-UUID-to-follow-consumers-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-78c52ced57a932f72b4d",
          "file": "tests/ui/identity.spec.ts",
          "line": 41,
          "column": 5
        },
        {
          "title": "unresolvable entity URL REP cannot supply a follow identity",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 154,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.756Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-unresolvable-enti-cf1bf-ot-supply-a-follow-identity-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-5785fbe455f87eb66b9c",
          "file": "tests/ui/identity.spec.ts",
          "line": 57,
          "column": 7
        },
        {
          "title": "unresolvable entity URL 22222222-2222-5222-8222-222222222222 cannot supply a follow identity",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 132,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:23.920Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-unresolvable-enti-05980-ot-supply-a-follow-identity-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-72f386879a310d931140",
          "file": "tests/ui/identity.spec.ts",
          "line": 57,
          "column": 7
        },
        {
          "title": "entity follow identity stays absent until graph resolution finishes",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 128,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.063Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-entity-follow-ide-e8f62-l-graph-resolution-finishes-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-164797e92a7650c98063",
          "file": "tests/ui/identity.spec.ts",
          "line": 64,
          "column": 5
        },
        {
          "title": "shared follow helper rejects legacy facet aliases before any write",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 121,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-22T23:14:24.200Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/identity-shared-follow-hel-73202-et-aliases-before-any-write-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "bc384e94f5cb1e491b4d-c1afd684176ff0fcb8cc",
          "file": "tests/ui/identity.spec.ts",
          "line": 85,
          "column": 5
        }
      ]
    },
    {
      "title": "tests/ui/responsive.spec.ts",
      "file": "tests/ui/responsive.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "phone layout (iPhone 13, 390px)",
          "file": "tests/ui/responsive.spec.ts",
          "line": 47,
          "column": 8,
          "specs": [
            {
              "title": "feed fits the screen width",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 492,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:23.224Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-13f12--feed-fits-the-screen-width-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-3c835ff1b3411f062858",
              "file": "tests/ui/responsive.spec.ts",
              "line": 50,
              "column": 9
            },
            {
              "title": "first article starts on the first screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 296,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:23.882Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-2caff--starts-on-the-first-screen-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-9c084ff68c22d5f8bb03",
              "file": "tests/ui/responsive.spec.ts",
              "line": 55,
              "column": 9
            },
            {
              "title": "filter panel scrolls away instead of covering the feed",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 282,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:24.189Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-6b680-nstead-of-covering-the-feed-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-50ba706805d98fcec48e",
              "file": "tests/ui/responsive.spec.ts",
              "line": 62,
              "column": 9
            },
            {
              "title": "filters collapse behind a toggle that counts active filters",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 626,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:24.479Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-decb6--that-counts-active-filters-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-07d69b5171698f68f4ad",
              "file": "tests/ui/responsive.spec.ts",
              "line": 72,
              "column": 9
            },
            {
              "title": "form fields are 16px so iOS does not zoom on focus",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 373,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:25.116Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-e60ac--iOS-does-not-zoom-on-focus-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-c09474f67b72aff4e103",
              "file": "tests/ui/responsive.spec.ts",
              "line": 93,
              "column": 9
            },
            {
              "title": "tap targets are at least 24px tall",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 293,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:25.501Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-4b98a-gets-are-at-least-24px-tall-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-443e74039ab40c7a67fb",
              "file": "tests/ui/responsive.spec.ts",
              "line": 104,
              "column": 9
            },
            {
              "title": "tapping an also-mentioned chip searches for it",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 319,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:25.810Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-c5aa1-tioned-chip-searches-for-it-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-c99136185daf52da3c8d",
              "file": "tests/ui/responsive.spec.ts",
              "line": 120,
              "column": 9
            },
            {
              "title": "entity page fits the screen and its card scrolls away",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 238,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:26.141Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-3d82b-n-and-its-card-scrolls-away-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-08f8dcdf9686c2c99b11",
              "file": "tests/ui/responsive.spec.ts",
              "line": 130,
              "column": 9
            }
          ]
        },
        {
          "title": "phone layout (iPhone SE, 320px)",
          "file": "tests/ui/responsive.spec.ts",
          "line": 47,
          "column": 8,
          "specs": [
            {
              "title": "feed fits the screen width",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 188,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:26.389Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-250df--feed-fits-the-screen-width-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-8a140fa0aa81b532d91a",
              "file": "tests/ui/responsive.spec.ts",
              "line": 50,
              "column": 9
            },
            {
              "title": "first article starts on the first screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 206,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:26.587Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-6381c--starts-on-the-first-screen-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-a0282d7dc196ed04b786",
              "file": "tests/ui/responsive.spec.ts",
              "line": 55,
              "column": 9
            },
            {
              "title": "filter panel scrolls away instead of covering the feed",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 225,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:26.806Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-bbd8e-nstead-of-covering-the-feed-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-4fd48ada87ea5478123d",
              "file": "tests/ui/responsive.spec.ts",
              "line": 62,
              "column": 9
            },
            {
              "title": "filters collapse behind a toggle that counts active filters",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 384,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:27.042Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-c4540--that-counts-active-filters-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-1db4e76ac30f347998c7",
              "file": "tests/ui/responsive.spec.ts",
              "line": 72,
              "column": 9
            },
            {
              "title": "form fields are 16px so iOS does not zoom on focus",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 257,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:27.440Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-ad47e--iOS-does-not-zoom-on-focus-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-256a90131eeb2b8887e8",
              "file": "tests/ui/responsive.spec.ts",
              "line": 93,
              "column": 9
            },
            {
              "title": "tap targets are at least 24px tall",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 236,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:27.708Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-c297c-gets-are-at-least-24px-tall-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-609aa6169b2d624b665a",
              "file": "tests/ui/responsive.spec.ts",
              "line": 104,
              "column": 9
            },
            {
              "title": "tapping an also-mentioned chip searches for it",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 256,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:27.954Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-81d4c-tioned-chip-searches-for-it-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-5613f060b4cd05db6a7d",
              "file": "tests/ui/responsive.spec.ts",
              "line": 120,
              "column": 9
            },
            {
              "title": "entity page fits the screen and its card scrolls away",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 202,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:28.221Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-phone-layout-iP-6a63f-n-and-its-card-scrolls-away-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-7782d1fdd2729bfd35b9",
              "file": "tests/ui/responsive.spec.ts",
              "line": 130,
              "column": 9
            }
          ]
        },
        {
          "title": "desktop layout (1280px)",
          "file": "tests/ui/responsive.spec.ts",
          "line": 140,
          "column": 6,
          "specs": [
            {
              "title": "filters stay an open, sticky sidebar beside the feed",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 237,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:28.438Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-desktop-layout--b7d31-cky-sidebar-beside-the-feed-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-1ccdfdca05420b6add45",
              "file": "tests/ui/responsive.spec.ts",
              "line": 143,
              "column": 7
            },
            {
              "title": "search keeps the long placeholder",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 185,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-22T23:14:28.690Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/8d90b0d/news-preview/test-output/responsive-desktop-layout--435b1--keeps-the-long-placeholder-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e0223b006feb3d306446-b0ef9e8d1a68f49089b4",
              "file": "tests/ui/responsive.spec.ts",
              "line": 155,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-10-22T23:14:22.634Z",
    "duration": 6313.915,
    "expected": 36,
    "skipped": 0,
    "unexpected": 0,
    "flaky": 0
  }
}