{
  "failsOnBase": true,
  "passesOnHead": true,
  "baseSha": "82479522cb667e09616a04705648ac4fab68b997",
  "headSha": "3f50a11291c025b41c69ecee42807cdc4537fd40",
  "verdict": "Proven: the scenario fails on base `82479522cb` and passes on head `3f50a11291`.",
  "steps": {
    "base": [
      {
        "step": "app.open <pairing link>",
        "status": "passed"
      },
      {
        "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/",
        "status": "passed"
      },
      {
        "step": "app.open /settings/connections",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Add environment\")",
        "status": "passed"
      },
      {
        "step": "locator.fill getByRole(\"textbox\", name: \"Host\")",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"dialog\") >> getByRole(\"button\", name: \"Add environment\")",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Details\")",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "app.screenshot before-retry",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Retry now\")",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "app.screenshot after-retry",
        "status": "passed"
      },
      {
        "step": "expect.toBeVisible getByText(\"http://127.0.0.1:47911/ \u00b7 Connected\")",
        "status": "failed"
      }
    ],
    "head": [
      {
        "step": "app.open <pairing link>",
        "status": "passed"
      },
      {
        "step": "expect.not.toHaveURL /\\/pair(?:[?#]|$)/",
        "status": "passed"
      },
      {
        "step": "app.open /settings/connections",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Add environment\")",
        "status": "passed"
      },
      {
        "step": "locator.fill getByRole(\"textbox\", name: \"Host\")",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"dialog\") >> getByRole(\"button\", name: \"Add environment\")",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Details\")",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "app.screenshot before-retry",
        "status": "passed"
      },
      {
        "step": "locator.tap getByRole(\"button\", name: \"Retry now\")",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      },
      {
        "step": "app.screenshot after-retry",
        "status": "passed"
      },
      {
        "step": "expect.toBeVisible getByText(\"http://127.0.0.1:47911/ \u00b7 Connected\")",
        "status": "passed"
      },
      {
        "step": "browser.evaluate ",
        "status": "passed"
      }
    ]
  },
  "environment": {
    "surface": "web",
    "browser": "Chromium 156.0.8078.4",
    "viewport": "1280x800",
    "theme": "light",
    "network": "Linux network namespace with loopback up and no other interfaces; native navigator.onLine=false",
    "data": "Fresh isolated homes, one synthetic project, second real server on loopback port 47911"
  },
  "controls": "Scenario checked native navigator.onLine=false, HTTP descriptor GET=200 before retry, and native navigator.onLine=false after 15 seconds.",
  "artifacts": [
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/896358a8c7cab5db/base-002-after-retry.png",
      "key": "896358a8c7cab5db/base-002-after-retry.png",
      "name": "base-002-after-retry.png",
      "size": 85581,
      "contentType": "image/png"
    },
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13dec8e53e12232c/head-002-after-retry.png",
      "key": "13dec8e53e12232c/head-002-after-retry.png",
      "name": "head-002-after-retry.png",
      "size": 67458,
      "contentType": "image/png"
    },
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07f71f34c554ef54/base-retry.mp4",
      "key": "07f71f34c554ef54/base-retry.mp4",
      "name": "base-retry.mp4",
      "size": 109618,
      "contentType": "video/mp4"
    },
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/03e9a9b1dce1bc82/head-retry.mp4",
      "key": "03e9a9b1dce1bc82/head-retry.mp4",
      "name": "head-retry.mp4",
      "size": 111121,
      "contentType": "video/mp4"
    },
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b62adf08eddc1925/offline-retry.e2e.ts",
      "key": "b62adf08eddc1925/offline-retry.e2e.ts",
      "name": "offline-retry.e2e.ts",
      "size": 2774,
      "contentType": "application/octet-stream"
    },
    {
      "url": "https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ea640e69f8d5f9f4/run-offline-proof.sh",
      "key": "ea640e69f8d5f9f4/run-offline-proof.sh",
      "name": "run-offline-proof.sh",
      "size": 459,
      "contentType": "application/octet-stream"
    }
  ]
}