{
  "config": {
    "argv": [
      "/opt/hostedtoolcache/node/20.20.2/x64/bin/node",
      "/home/runner/work/dr-card-web/dr-card-web/node_modules/.bin/playwright",
      "test",
      "tests/e2e/test-gate.spec.ts"
    ],
    "configFile": "/home/runner/work/dr-card-web/dr-card-web/playwright.config.ts",
    "rootDir": "/home/runner/work/dr-card-web/dr-card-web/tests/e2e",
    "failOnFlakyTests": false,
    "forbidOnly": true,
    "fullyParallel": true,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "ci": {
        "commitHref": "https://github.com/sanchuang-dev/dr-card-web/commit/2bd167bcea926c0c5186ae1009ba11542f948c96",
        "commitHash": "2bd167bcea926c0c5186ae1009ba11542f948c96",
        "prHref": "https://github.com/sanchuang-dev/dr-card-web/pull/219",
        "prTitle": "release(test): 晋级 #218 H5 图片规格治理",
        "prBaseHash": "470ed7c7f230a4bf0212095c32c8f407aa20ecac",
        "buildHref": "https://github.com/sanchuang-dev/dr-card-web/actions/runs/38367894244"
      },
      "gitCommit": {
        "shortHash": "2bd167b",
        "hash": "2bd167bcea926c0c5186ae1009ba11542f948c96",
        "subject": "Merge 589e096908e47922e1d576563ed2008e4e5c0e60 into 470ed7c7f230a4bf0212095c32c8f407aa20ecac",
        "body": "Merge 589e096908e47922e1d576563ed2008e4e5c0e60 into 470ed7c7f230a4bf0212095c32c8f407aa20ecac\n",
        "author": {
          "name": "Tomz Dang",
          "email": "dangjingtao@163.com",
          "time": 1791879256000
        },
        "committer": {
          "name": "GitHub",
          "email": "noreply@github.com",
          "time": 1791879256000
        },
        "branch": "HEAD"
      },
      "gitDiff": "diff --git a/docs/engineering/image-asset-sizing.md b/docs/engineering/image-asset-sizing.md\nnew file mode 100644\nindex 0000000..dd56f6a\n--- /dev/null\n+++ b/docs/engineering/image-asset-sizing.md\n@@ -0,0 +1,11 @@\n+# H5 运行图片导出规范\n+\n+卡博士 H5 以 375 CSS px 为主要手机基准。运行图片放在 src/assets/；设计原件与测试证据另行保存。\n+\n+- 按页面槽位分规格，不把所有图片压成同一尺寸。位图一般使用实际显示宽高的 2–3 倍输出；小头像 192×192，64 px 图标 192×192。\n+- 圆形头像的静态画面按 CSS object-cover 相同的居中区域裁正方形，其他图片保留原生比例，特别是透明人物、商品包装、含字宣传图。\n+- 满屏横幅和品牌长图参考 375 CSS px × 3，即宽度约 1125 px；细节多的长图优先保持文字可读。\n+- 已合适的会员卡面 770×450、小商品图和矢量 SVG 不做反复有损压缩。\n+- 首页历史 375×210 单倍图 home-banner-carousel.webp 需要原始设计高清图才能真正改善清晰度；禁止简单放大伪造分辨率。\n+- 使用中的图片才保留在 src/assets；删除前查真实代码引用。docs/、delivery/、design-export/ 中的原稿或历史截图不作为运行时垃圾清理。\n+- npm run verify:images 现有门禁检查 WebP 格式和 500 KiB 单文件上限；不能替代像素与真机视觉验收。\ndiff --git a/src/assets/brand/bubble/checkin-bubble-3d.webp b/src/assets/brand/bubble/checkin-bubble-3d.webp\ndeleted file mode 100644\nindex c04b8b7..0000000\nBinary files a/src/assets/brand/bubble/checkin-bubble-3d.webp and /dev/null differ\ndiff --git a/src/assets/brand/bubble/points-benefit-checkin.webp b/src/assets/brand/bubble/points-benefit-checkin.webp\nindex 88fb57c..7d2ef15 100644\nBinary files a/src/assets/brand/bubble/points-benefit-checkin.webp and b/src/assets/brand/bubble/points-benefit-checkin.webp differ\ndiff --git a/src/assets/brand/bubble/points-benefit-hero-v2.webp b/src/assets/brand/bubble/points-benefit-hero-v2.webp\nindex 31097f9..83451f5 100644\nBinary files a/src/assets/brand/bubble/points-benefit-hero-v2.webp and b/src/assets/brand/bubble/points-benefit-hero-v2.webp differ\ndiff --git a/src/assets/brand/bubble/points-benefit-hero.webp b/src/assets/brand/bubble/points-benefit-hero.webp\ndeleted file mode 100644\nindex be04111..0000000\nBinary files a/src/assets/brand/bubble/points-benefit-hero.webp and /dev/null differ\ndiff --git a/src/assets/brand/bubble/points-benefit-voucher.webp b/src/assets/brand/bubble/points-benefit-voucher.webp\nindex 059e17b..225780a 100644\nBinary files a/src/assets/brand/bubble/points-benefit-voucher.webp and b/src/assets/brand/bubble/points-benefit-voucher.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-avatar-self.webp b/src/assets/brand/buddy/buddy-avatar-self.webp\nindex 9b45ac7..dcdadaf 100644\nBinary files a/src/assets/brand/buddy/buddy-avatar-self.webp and b/src/assets/brand/buddy/buddy-avatar-self.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-avatar-xiaomei.webp b/src/assets/brand/buddy/buddy-avatar-xiaomei.webp\nindex c96b047..f209834 100644\nBinary files a/src/assets/brand/buddy/buddy-avatar-xiaomei.webp and b/src/assets/brand/buddy/buddy-avatar-xiaomei.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-empty-hero-v2.webp b/src/assets/brand/buddy/buddy-empty-hero-v2.webp\nindex 5ed04fc..6de43ae 100644\nBinary files a/src/assets/brand/buddy/buddy-empty-hero-v2.webp and b/src/assets/brand/buddy/buddy-empty-hero-v2.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-ip-shower.webp b/src/assets/brand/buddy/buddy-ip-shower.webp\ndeleted file mode 100644\nindex 80e6c87..0000000\nBinary files a/src/assets/brand/buddy/buddy-ip-shower.webp and /dev/null differ\ndiff --git a/src/assets/brand/buddy/buddy-scan-guide-mascot.webp b/src/assets/brand/buddy/buddy-scan-guide-mascot.webp\nindex 64182ba..fb7a9b2 100644\nBinary files a/src/assets/brand/buddy/buddy-scan-guide-mascot.webp and b/src/assets/brand/buddy/buddy-scan-guide-mascot.webp differ\ndiff --git a/src/assets/brand/empty/empty-illustration.webp b/src/assets/brand/empty/empty-illustration.webp\nindex 37cc6f0..d345c98 100644\nBinary files a/src/assets/brand/empty/empty-illustration.webp and b/src/assets/brand/empty/empty-illustration.webp differ\ndiff --git a/src/assets/brand/error/error-illustration.webp b/src/assets/brand/error/error-illustration.webp\nindex 1ecd294..e2eaf41 100644\nBinary files a/src/assets/brand/error/error-illustration.webp and b/src/assets/brand/error/error-illustration.webp differ\ndiff --git a/src/assets/brand/exchange/exchange-promo-shampoo.webp b/src/assets/brand/exchange/exchange-promo-shampoo.webp\nindex 07895c8..e994e2f 100644\nBinary files a/src/assets/brand/exchange/exchange-promo-shampoo.webp and b/src/assets/brand/exchange/exchange-promo-shampoo.webp differ\ndiff --git a/src/assets/brand/exchange/profile-hot-herbal.webp b/src/assets/brand/exchange/profile-hot-herbal.webp\ndeleted file mode 100644\nindex d2b85ce..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-herbal.webp and /dev/null differ\ndiff --git a/src/assets/brand/exchange/profile-hot-honey.webp b/src/assets/brand/exchange/profile-hot-honey.webp\ndeleted file mode 100644\nindex e86a396..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-honey.webp and /dev/null differ\ndiff --git a/src/assets/brand/exchange/profile-hot-seasalt.webp b/src/assets/brand/exchange/profile-hot-seasalt.webp\ndeleted file mode 100644\nindex db9a834..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-seasalt.webp and /dev/null differ\ndiff --git a/src/assets/brand/home/home-banner-checkin.webp b/src/assets/brand/home/home-banner-checkin.webp\nindex 4e1cb94..e57ed89 100644\nBinary files a/src/assets/brand/home/home-banner-checkin.webp and b/src/assets/brand/home/home-banner-checkin.webp differ\ndiff --git a/src/assets/brand/home/home-banner-wash-care.webp b/src/assets/brand/home/home-banner-wash-care.webp\nindex b1ed57d..046e61e 100644\nBinary files a/src/assets/brand/home/home-banner-wash-care.webp and b/src/assets/brand/home/home-banner-wash-care.webp differ\ndiff --git a/src/assets/brand/ip/brand-culture-longpage.webp b/src/assets/brand/ip/brand-culture-longpage.webp\nindex d4f869a..db8024a 100644\nBinary files a/src/assets/brand/ip/brand-culture-longpage.webp and b/src/assets/brand/ip/brand-culture-longpage.webp differ\ndiff --git a/src/assets/brand/member/checkin-dearseed-kit.webp b/src/assets/brand/member/checkin-dearseed-kit.webp\nindex 21a90e0..a1306d8 100644\nBinary files a/src/assets/brand/member/checkin-dearseed-kit.webp and b/src/assets/brand/member/checkin-dearseed-kit.webp differ\ndiff --git a/src/assets/brand/member/member-levels-hero.webp b/src/assets/brand/member/member-levels-hero.webp\ndeleted file mode 100644\nindex dd7fbbf..0000000\nBinary files a/src/assets/brand/member/member-levels-hero.webp and /dev/null differ\ndiff --git a/src/assets/brand/member/member-lv4-hero.webp b/src/assets/brand/member/member-lv4-hero.webp\ndeleted file mode 100644\nindex 264b87a..0000000\nBinary files a/src/assets/brand/member/member-lv4-hero.webp and /dev/null differ\ndiff --git a/src/pages/BuddyScanLanding.tsx b/src/pages/BuddyScanLanding.tsx\nindex 27ebd3d..62c2068 100644\n--- a/src/pages/BuddyScanLanding.tsx\n+++ b/src/pages/BuddyScanLanding.tsx\n@@ -29,8 +29,8 @@ export default function BuddyScanLanding() {\n           className=\"mx-auto mt-4 block h-auto w-full max-w-[392px] select-none\"\n           draggable={false}\n           decoding=\"async\"\n-          width={1544}\n-          height={1019}\n+          width={1176}\n+          height={776}\n         />\n \n         <p className=\"mx-auto mt-1 w-fit rounded-full border border-[#ffe6cc] bg-[#fff1e3] px-4 py-1.5 text-[11px] text-text-secondary\">",
      "actualWorkers": 2
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/home/runner/work/dr-card-web/dr-card-web/test-results/artifacts",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "ci": {
            "commitHref": "https://github.com/sanchuang-dev/dr-card-web/commit/2bd167bcea926c0c5186ae1009ba11542f948c96",
            "commitHash": "2bd167bcea926c0c5186ae1009ba11542f948c96",
            "prHref": "https://github.com/sanchuang-dev/dr-card-web/pull/219",
            "prTitle": "release(test): 晋级 #218 H5 图片规格治理",
            "prBaseHash": "470ed7c7f230a4bf0212095c32c8f407aa20ecac",
            "buildHref": "https://github.com/sanchuang-dev/dr-card-web/actions/runs/38367894244"
          },
          "gitCommit": {
            "shortHash": "2bd167b",
            "hash": "2bd167bcea926c0c5186ae1009ba11542f948c96",
            "subject": "Merge 589e096908e47922e1d576563ed2008e4e5c0e60 into 470ed7c7f230a4bf0212095c32c8f407aa20ecac",
            "body": "Merge 589e096908e47922e1d576563ed2008e4e5c0e60 into 470ed7c7f230a4bf0212095c32c8f407aa20ecac\n",
            "author": {
              "name": "Tomz Dang",
              "email": "dangjingtao@163.com",
              "time": 1791879256000
            },
            "committer": {
              "name": "GitHub",
              "email": "noreply@github.com",
              "time": 1791879256000
            },
            "branch": "HEAD"
          },
          "gitDiff": "diff --git a/docs/engineering/image-asset-sizing.md b/docs/engineering/image-asset-sizing.md\nnew file mode 100644\nindex 0000000..dd56f6a\n--- /dev/null\n+++ b/docs/engineering/image-asset-sizing.md\n@@ -0,0 +1,11 @@\n+# H5 运行图片导出规范\n+\n+卡博士 H5 以 375 CSS px 为主要手机基准。运行图片放在 src/assets/；设计原件与测试证据另行保存。\n+\n+- 按页面槽位分规格，不把所有图片压成同一尺寸。位图一般使用实际显示宽高的 2–3 倍输出；小头像 192×192，64 px 图标 192×192。\n+- 圆形头像的静态画面按 CSS object-cover 相同的居中区域裁正方形，其他图片保留原生比例，特别是透明人物、商品包装、含字宣传图。\n+- 满屏横幅和品牌长图参考 375 CSS px × 3，即宽度约 1125 px；细节多的长图优先保持文字可读。\n+- 已合适的会员卡面 770×450、小商品图和矢量 SVG 不做反复有损压缩。\n+- 首页历史 375×210 单倍图 home-banner-carousel.webp 需要原始设计高清图才能真正改善清晰度；禁止简单放大伪造分辨率。\n+- 使用中的图片才保留在 src/assets；删除前查真实代码引用。docs/、delivery/、design-export/ 中的原稿或历史截图不作为运行时垃圾清理。\n+- npm run verify:images 现有门禁检查 WebP 格式和 500 KiB 单文件上限；不能替代像素与真机视觉验收。\ndiff --git a/src/assets/brand/bubble/checkin-bubble-3d.webp b/src/assets/brand/bubble/checkin-bubble-3d.webp\ndeleted file mode 100644\nindex c04b8b7..0000000\nBinary files a/src/assets/brand/bubble/checkin-bubble-3d.webp and /dev/null differ\ndiff --git a/src/assets/brand/bubble/points-benefit-checkin.webp b/src/assets/brand/bubble/points-benefit-checkin.webp\nindex 88fb57c..7d2ef15 100644\nBinary files a/src/assets/brand/bubble/points-benefit-checkin.webp and b/src/assets/brand/bubble/points-benefit-checkin.webp differ\ndiff --git a/src/assets/brand/bubble/points-benefit-hero-v2.webp b/src/assets/brand/bubble/points-benefit-hero-v2.webp\nindex 31097f9..83451f5 100644\nBinary files a/src/assets/brand/bubble/points-benefit-hero-v2.webp and b/src/assets/brand/bubble/points-benefit-hero-v2.webp differ\ndiff --git a/src/assets/brand/bubble/points-benefit-hero.webp b/src/assets/brand/bubble/points-benefit-hero.webp\ndeleted file mode 100644\nindex be04111..0000000\nBinary files a/src/assets/brand/bubble/points-benefit-hero.webp and /dev/null differ\ndiff --git a/src/assets/brand/bubble/points-benefit-voucher.webp b/src/assets/brand/bubble/points-benefit-voucher.webp\nindex 059e17b..225780a 100644\nBinary files a/src/assets/brand/bubble/points-benefit-voucher.webp and b/src/assets/brand/bubble/points-benefit-voucher.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-avatar-self.webp b/src/assets/brand/buddy/buddy-avatar-self.webp\nindex 9b45ac7..dcdadaf 100644\nBinary files a/src/assets/brand/buddy/buddy-avatar-self.webp and b/src/assets/brand/buddy/buddy-avatar-self.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-avatar-xiaomei.webp b/src/assets/brand/buddy/buddy-avatar-xiaomei.webp\nindex c96b047..f209834 100644\nBinary files a/src/assets/brand/buddy/buddy-avatar-xiaomei.webp and b/src/assets/brand/buddy/buddy-avatar-xiaomei.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-empty-hero-v2.webp b/src/assets/brand/buddy/buddy-empty-hero-v2.webp\nindex 5ed04fc..6de43ae 100644\nBinary files a/src/assets/brand/buddy/buddy-empty-hero-v2.webp and b/src/assets/brand/buddy/buddy-empty-hero-v2.webp differ\ndiff --git a/src/assets/brand/buddy/buddy-ip-shower.webp b/src/assets/brand/buddy/buddy-ip-shower.webp\ndeleted file mode 100644\nindex 80e6c87..0000000\nBinary files a/src/assets/brand/buddy/buddy-ip-shower.webp and /dev/null differ\ndiff --git a/src/assets/brand/buddy/buddy-scan-guide-mascot.webp b/src/assets/brand/buddy/buddy-scan-guide-mascot.webp\nindex 64182ba..fb7a9b2 100644\nBinary files a/src/assets/brand/buddy/buddy-scan-guide-mascot.webp and b/src/assets/brand/buddy/buddy-scan-guide-mascot.webp differ\ndiff --git a/src/assets/brand/empty/empty-illustration.webp b/src/assets/brand/empty/empty-illustration.webp\nindex 37cc6f0..d345c98 100644\nBinary files a/src/assets/brand/empty/empty-illustration.webp and b/src/assets/brand/empty/empty-illustration.webp differ\ndiff --git a/src/assets/brand/error/error-illustration.webp b/src/assets/brand/error/error-illustration.webp\nindex 1ecd294..e2eaf41 100644\nBinary files a/src/assets/brand/error/error-illustration.webp and b/src/assets/brand/error/error-illustration.webp differ\ndiff --git a/src/assets/brand/exchange/exchange-promo-shampoo.webp b/src/assets/brand/exchange/exchange-promo-shampoo.webp\nindex 07895c8..e994e2f 100644\nBinary files a/src/assets/brand/exchange/exchange-promo-shampoo.webp and b/src/assets/brand/exchange/exchange-promo-shampoo.webp differ\ndiff --git a/src/assets/brand/exchange/profile-hot-herbal.webp b/src/assets/brand/exchange/profile-hot-herbal.webp\ndeleted file mode 100644\nindex d2b85ce..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-herbal.webp and /dev/null differ\ndiff --git a/src/assets/brand/exchange/profile-hot-honey.webp b/src/assets/brand/exchange/profile-hot-honey.webp\ndeleted file mode 100644\nindex e86a396..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-honey.webp and /dev/null differ\ndiff --git a/src/assets/brand/exchange/profile-hot-seasalt.webp b/src/assets/brand/exchange/profile-hot-seasalt.webp\ndeleted file mode 100644\nindex db9a834..0000000\nBinary files a/src/assets/brand/exchange/profile-hot-seasalt.webp and /dev/null differ\ndiff --git a/src/assets/brand/home/home-banner-checkin.webp b/src/assets/brand/home/home-banner-checkin.webp\nindex 4e1cb94..e57ed89 100644\nBinary files a/src/assets/brand/home/home-banner-checkin.webp and b/src/assets/brand/home/home-banner-checkin.webp differ\ndiff --git a/src/assets/brand/home/home-banner-wash-care.webp b/src/assets/brand/home/home-banner-wash-care.webp\nindex b1ed57d..046e61e 100644\nBinary files a/src/assets/brand/home/home-banner-wash-care.webp and b/src/assets/brand/home/home-banner-wash-care.webp differ\ndiff --git a/src/assets/brand/ip/brand-culture-longpage.webp b/src/assets/brand/ip/brand-culture-longpage.webp\nindex d4f869a..db8024a 100644\nBinary files a/src/assets/brand/ip/brand-culture-longpage.webp and b/src/assets/brand/ip/brand-culture-longpage.webp differ\ndiff --git a/src/assets/brand/member/checkin-dearseed-kit.webp b/src/assets/brand/member/checkin-dearseed-kit.webp\nindex 21a90e0..a1306d8 100644\nBinary files a/src/assets/brand/member/checkin-dearseed-kit.webp and b/src/assets/brand/member/checkin-dearseed-kit.webp differ\ndiff --git a/src/assets/brand/member/member-levels-hero.webp b/src/assets/brand/member/member-levels-hero.webp\ndeleted file mode 100644\nindex dd7fbbf..0000000\nBinary files a/src/assets/brand/member/member-levels-hero.webp and /dev/null differ\ndiff --git a/src/assets/brand/member/member-lv4-hero.webp b/src/assets/brand/member/member-lv4-hero.webp\ndeleted file mode 100644\nindex 264b87a..0000000\nBinary files a/src/assets/brand/member/member-lv4-hero.webp and /dev/null differ\ndiff --git a/src/pages/BuddyScanLanding.tsx b/src/pages/BuddyScanLanding.tsx\nindex 27ebd3d..62c2068 100644\n--- a/src/pages/BuddyScanLanding.tsx\n+++ b/src/pages/BuddyScanLanding.tsx\n@@ -29,8 +29,8 @@ export default function BuddyScanLanding() {\n           className=\"mx-auto mt-4 block h-auto w-full max-w-[392px] select-none\"\n           draggable={false}\n           decoding=\"async\"\n-          width={1544}\n-          height={1019}\n+          width={1176}\n+          height={776}\n         />\n \n         <p className=\"mx-auto mt-1 w-fit rounded-full border border-[#ffe6cc] bg-[#fff1e3] px-4 py-1.5 text-[11px] text-text-secondary\">",
          "actualWorkers": 2
        },
        "id": "chromium-mobile",
        "name": "chromium-mobile",
        "testDir": "/home/runner/work/dr-card-web/dr-card-web/tests/e2e",
        "testIgnore": [],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 30000
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "line",
        null
      ],
      [
        "html",
        {
          "outputFolder": "playwright-report",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "test-results/playwright-results.json"
        }
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "missing",
    "updateSourceMethod": "patch",
    "version": "1.63.0",
    "workers": 2,
    "webServer": null
  },
  "suites": [
    {
      "title": "test-gate.spec.ts",
      "file": "test-gate.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "@test-gate build identity matches the production-like test policy",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 72,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:20.148Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-c3b6e0ce5d8c5d8734e5",
          "file": "test-gate.spec.ts",
          "line": 31,
          "column": 1
        },
        {
          "title": "@test-gate browser entry does not start the app router",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 1277,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:20.121Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-8ed37c8041402a2a6b34",
          "file": "test-gate.spec.ts",
          "line": 40,
          "column": 1
        },
        {
          "title": "@test-gate / shows the unsupported-host notice in a browser",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 1342,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:20.295Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-b030d57053896c93a550",
          "file": "test-gate.spec.ts",
          "line": 51,
          "column": 3
        },
        {
          "title": "@test-gate /profile shows the unsupported-host notice in a browser",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 1175,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:21.750Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-8605535a2807e17fcccc",
          "file": "test-gate.spec.ts",
          "line": 51,
          "column": 3
        },
        {
          "title": "@test-gate /settings shows the unsupported-host notice in a browser",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 1024,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:21.789Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-4a2fdc9884c1725de4f8",
          "file": "test-gate.spec.ts",
          "line": 51,
          "column": 3
        },
        {
          "title": "@test-gate gated browser entry issues no business API request",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 0,
                  "parallelIndex": 0,
                  "status": "passed",
                  "duration": 1018,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:22.844Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-09f38a2b8ed735e192d8",
          "file": "test-gate.spec.ts",
          "line": 65,
          "column": 1
        },
        {
          "title": "@test-gate injected native host bypasses the notice and starts the app",
          "ok": true,
          "tags": [
            "test-gate"
          ],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "chromium-mobile",
              "projectName": "chromium-mobile",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 1066,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-13T08:15:22.950Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "37c772ca39f4c8e5dd7a-8caf237c4d42513fff2f",
          "file": "test-gate.spec.ts",
          "line": 80,
          "column": 1
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-10-13T08:15:18.841Z",
    "duration": 5236.831,
    "expected": 7,
    "skipped": 0,
    "unexpected": 0,
    "flaky": 0
  }
}