{
  "schemaVersion": 1,
  "recordType": "recorded-browser-self-test",
  "sdkVersion": "0.5.0-beta.7",
  "assets": {
    "sdkRuntime": {
      "kind": "public-asset",
      "publicPath": "/vendor/savyscan/0.5.0-beta.7/document-scanner.js",
      "sha256": "6d2971b4bbef606bb0291c7482c2e1a630ceae2d97dd9d5c18c46b7f8a64eb33"
    },
    "sdkStyles": {
      "kind": "public-asset",
      "publicPath": "/vendor/savyscan/0.5.0-beta.7/document-scanner.css",
      "sha256": "d514aa6fa295a130199b6666bb9c984bcca3c1dd0ea7f36c193a01dc32b80694"
    },
    "openCvRuntime": {
      "kind": "public-asset",
      "publicPath": "/vendor/opencv/4.13.0/opencv.js",
      "sha256": "63366510248adf3a7eddf3e793dd825404efb7df3749f4d6f8557c7fa4ca8aa0"
    },
    "selfTestRunner": {
      "kind": "public-asset",
      "publicPath": "/assets/qualification.js",
      "sha256": "091d0cf29973b869a7f2eca3d0619d508ea1d4163d51288162a192e631146e3d"
    },
    "qualificationPage": {
      "kind": "public-asset",
      "publicPath": "/qualification/index.html",
      "sha256": "987053f2f55aa4ed2260691c90266a83fb01e4ef0f5b655f8e5baf90e070ed3e"
    },
    "siteStyles": {
      "kind": "public-asset",
      "publicPath": "/assets/site.css",
      "sha256": "6c0ad6a60a91af1e09dd5a4141a97d858e1a04d4fc8c814332e9af0a91f422b5"
    },
    "siteWorker": {
      "kind": "optional-response-worker-source",
      "repositoryPath": "site/worker/index.js",
      "buildPath": "site/dist/server/index.js",
      "sha256": "448c2d9ce959e52ba9babfafcc4a5079333002dc82ce0dd681cd4cc0912c2fc3"
    },
    "localServer": {
      "kind": "local-server",
      "repositoryPath": "site/scripts/serve.mjs",
      "sha256": "8a87bdff260def22d8be7d9051f8d831f44d3f543b4290f6aecf2b02f6ad2875"
    }
  },
  "environment": {
    "surface": "Playwright Chromium",
    "origin": "http://127.0.0.1:4173",
    "serverImplementation": "site/scripts/serve.mjs",
    "reportedPlatform": "macOS",
    "language": "en-US",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36"
  },
  "execution": {
    "launchMode": "Automated browser-native self-test against the local site build",
    "ciRegressionGate": false,
    "fixtureSource": "Generated JPEG files held in browser memory",
    "cameraBoundary": "The page temporarily replaced getUserMedia with a deterministic NotAllowedError and the route also declared camera=()",
    "cameraHardwareAccessed": false,
    "contentSecurityPolicyBoundary": "The qualification document declared the OpenCV-compatible HTML CSP fallback and the local server declared the matching response policy"
  },
  "runs": [
    {
      "id": "default-browser-viewport",
      "observedAt": "2026-07-24T20:17:16.000Z",
      "viewport": {
        "widthCssPixels": 1280,
        "heightCssPixels": 720,
        "devicePixelRatio": 2,
        "scope": "default browser viewport"
      },
      "status": "passed",
      "checks": [
        { "name": "Runtime and self-test capabilities", "status": "passed" },
        { "name": "Structured configuration validation", "status": "passed" },
        { "name": "Independent instances and interface removal", "status": "passed" },
        { "name": "Camera-denied Photos fallback", "status": "passed" },
        { "name": "First-page import and correction", "status": "passed" },
        { "name": "Keyboard crop and page rotation", "status": "passed" },
        { "name": "Second page and multipage PDF", "status": "passed" },
        { "name": "Reopen, cancel, and destroy lifecycle", "status": "passed" }
      ]
    },
    {
      "id": "narrow-viewport-logic-rerun",
      "observedAt": "2026-07-24T20:17:16.000Z",
      "viewport": {
        "widthCssPixels": 390,
        "heightCssPixels": 844,
        "devicePixelRatio": 1,
        "scope": "workflow-logic rerun; scanner UI remained offscreen and this is not responsive-UI evidence"
      },
      "status": "passed",
      "checks": [
        { "name": "Runtime and self-test capabilities", "status": "passed" },
        { "name": "Structured configuration validation", "status": "passed" },
        { "name": "Independent instances and interface removal", "status": "passed" },
        { "name": "Camera-denied Photos fallback", "status": "passed" },
        { "name": "First-page import and correction", "status": "passed" },
        { "name": "Keyboard crop and page rotation", "status": "passed" },
        { "name": "Second page and multipage PDF", "status": "passed" },
        { "name": "Reopen, cancel, and destroy lifecycle", "status": "passed" }
      ]
    }
  ],
  "boundaries": [
    "This is not a branded Chrome or Edge qualification.",
    "This is not a CI system-browser regression result.",
    "The narrow-viewport run does not establish responsive scanner UI behavior.",
    "No camera hardware, permission prompt, automatic capture, manual shutter, touch drag, orientation change, background restore, host upload, or email attachment was tested.",
    "No named browser version or physical device becomes supported from this record."
  ]
}
