{
  "generatedAt": "2026-08-05T10:32:56.141Z",
  "browser": "Google Chrome via Playwright channel=chrome",
  "origin": "http://127.0.0.1:4320",
  "pathname": "/three-product-viewer-next-2026-08-05/out/physics-hero/",
  "verdict": "PASS",
  "matrix": [
    {
      "viewport": {
        "name": "mobile",
        "width": 390,
        "height": 844
      },
      "initialState": "idle",
      "ready": {
        "state": "ready",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready",
        "physicsInput": "ambient",
        "physicsState": "active",
        "steps": 21,
        "shakeCount": 0,
        "sensorPermission": "prompt",
        "bodyCount": 22,
        "centroid": [
          0.003,
          0.246
        ],
        "gravity": [
          0,
          -16
        ],
        "frameCount": 22,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 1,
        "documentOverflow": 0,
        "owner": {
          "width": 362,
          "height": 452
        },
        "canvas": {
          "width": 362,
          "height": 452,
          "bufferWidth": 362,
          "bufferHeight": 452
        },
        "ownerViolation": false
      },
      "interaction": {
        "centroidDelta": 3.411769335696656,
        "gravity": [
          15.891,
          3.069
        ]
      },
      "sensor": {
        "state": "interacting",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready>interacting>ready>interacting",
        "physicsInput": "device-motion",
        "physicsState": "active",
        "steps": 67,
        "shakeCount": 1,
        "sensorPermission": "granted",
        "bodyCount": 22,
        "centroid": [
          2.441,
          -2.622
        ],
        "gravity": [
          15.942,
          3.131
        ],
        "frameCount": 67,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 1,
        "documentOverflow": 0,
        "owner": {
          "width": 362,
          "height": 452
        },
        "canvas": {
          "width": 362,
          "height": 452,
          "bufferWidth": 362,
          "bufferHeight": 452
        },
        "ownerViolation": false
      },
      "pageErrors": [],
      "screenshot": "/output/playwright/three-product-viewer-next-2026-08-05/physics-hero-verification/mobile-physics-ready.png"
    },
    {
      "viewport": {
        "name": "tablet",
        "width": 768,
        "height": 900
      },
      "initialState": "idle",
      "ready": {
        "state": "ready",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready",
        "physicsInput": "ambient",
        "physicsState": "active",
        "steps": 20,
        "shakeCount": 0,
        "sensorPermission": "prompt",
        "bodyCount": 22,
        "centroid": [
          -0.054,
          0.253
        ],
        "gravity": [
          0,
          -16
        ],
        "frameCount": 21,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 1.5,
        "documentOverflow": 0,
        "owner": {
          "width": 740,
          "height": 620
        },
        "canvas": {
          "width": 740,
          "height": 620,
          "bufferWidth": 1110,
          "bufferHeight": 930
        },
        "ownerViolation": false
      },
      "interaction": {
        "centroidDelta": 3.384575010248702,
        "gravity": [
          15.891,
          3.069
        ]
      },
      "sensor": {
        "state": "interacting",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready>interacting>ready>interacting",
        "physicsInput": "device-motion",
        "physicsState": "active",
        "steps": 63,
        "shakeCount": 1,
        "sensorPermission": "granted",
        "bodyCount": 22,
        "centroid": [
          2.246,
          -2.789
        ],
        "gravity": [
          15.925,
          3.111
        ],
        "frameCount": 64,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 1.5,
        "documentOverflow": 0,
        "owner": {
          "width": 740,
          "height": 620
        },
        "canvas": {
          "width": 740,
          "height": 620,
          "bufferWidth": 1110,
          "bufferHeight": 930
        },
        "ownerViolation": false
      },
      "pageErrors": [],
      "screenshot": "/output/playwright/three-product-viewer-next-2026-08-05/physics-hero-verification/tablet-physics-ready.png"
    },
    {
      "viewport": {
        "name": "desktop",
        "width": 1280,
        "height": 900
      },
      "initialState": "idle",
      "ready": {
        "state": "ready",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready",
        "physicsInput": "ambient",
        "physicsState": "active",
        "steps": 22,
        "shakeCount": 0,
        "sensorPermission": "prompt",
        "bodyCount": 22,
        "centroid": [
          -0.065,
          0.092
        ],
        "gravity": [
          0,
          -16
        ],
        "frameCount": 22,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 2,
        "documentOverflow": 0,
        "owner": {
          "width": 759,
          "height": 808
        },
        "canvas": {
          "width": 759,
          "height": 808,
          "bufferWidth": 1517,
          "bufferHeight": 1616
        },
        "ownerViolation": false
      },
      "interaction": {
        "centroidDelta": 3.5193165529687724,
        "gravity": [
          15.891,
          3.069
        ]
      },
      "sensor": {
        "state": "interacting",
        "readiness": "ready",
        "stateHistory": "idle>loading>ready>interacting>ready>interacting",
        "physicsInput": "device-motion",
        "physicsState": "active",
        "steps": 65,
        "shakeCount": 1,
        "sensorPermission": "granted",
        "bodyCount": 22,
        "centroid": [
          2.315,
          -2.983
        ],
        "gravity": [
          15.925,
          3.111
        ],
        "frameCount": 65,
        "loopState": "running",
        "pauseReason": "none",
        "contextState": "active",
        "dpr": 2,
        "documentOverflow": 0,
        "owner": {
          "width": 759,
          "height": 808
        },
        "canvas": {
          "width": 759,
          "height": 808,
          "bufferWidth": 1517,
          "bufferHeight": 1616
        },
        "ownerViolation": false
      },
      "pageErrors": [],
      "screenshot": "/output/playwright/three-product-viewer-next-2026-08-05/physics-hero-verification/desktop-physics-ready.png"
    }
  ],
  "assertions": {
    "runtimeErrors": 0,
    "documentOverflow": 0,
    "canvasOwnerViolations": 0,
    "bodyCount": 22
  },
  "responsiveRoundTrip": {
    "sequence": [
      1280,
      390,
      1280
    ],
    "beforeInteractionDelta": 2.305667799141932,
    "afterInteractionDelta": 0.5909534668652009,
    "mobile": {
      "state": "ready",
      "readiness": "ready",
      "stateHistory": "idle>loading>ready>interacting>ready",
      "physicsInput": "test-pointer",
      "physicsState": "active",
      "steps": 47,
      "shakeCount": 0,
      "sensorPermission": "prompt",
      "bodyCount": 22,
      "centroid": [
        -2.793,
        0.997
      ],
      "gravity": [
        -15.934,
        7.902
      ],
      "frameCount": 47,
      "loopState": "running",
      "pauseReason": "none",
      "contextState": "active",
      "dpr": 1,
      "documentOverflow": 0,
      "owner": {
        "width": 362,
        "height": 452
      },
      "canvas": {
        "width": 362,
        "height": 452,
        "bufferWidth": 362,
        "bufferHeight": 452
      },
      "ownerViolation": false
    },
    "desktop": {
      "state": "ready",
      "readiness": "ready",
      "stateHistory": "idle>loading>ready>interacting>ready",
      "physicsInput": "test-pointer",
      "physicsState": "active",
      "steps": 50,
      "shakeCount": 0,
      "sensorPermission": "prompt",
      "bodyCount": 22,
      "centroid": [
        -3.03,
        1.112
      ],
      "gravity": [
        -15.955,
        7.933
      ],
      "frameCount": 50,
      "loopState": "running",
      "pauseReason": "none",
      "contextState": "active",
      "dpr": 2,
      "documentOverflow": 0,
      "owner": {
        "width": 759,
        "height": 808
      },
      "canvas": {
        "width": 759,
        "height": 808,
        "bufferWidth": 1517,
        "bufferHeight": 1616
      },
      "ownerViolation": false
    }
  },
  "lifecycle": {
    "offscreen": {
      "state": "ready",
      "readiness": "ready",
      "stateHistory": "idle>loading>ready>interacting>ready>interacting>ready",
      "physicsInput": "test-pointer",
      "physicsState": "active",
      "steps": 90,
      "shakeCount": 0,
      "sensorPermission": "prompt",
      "bodyCount": 22,
      "centroid": [
        -3.199,
        1.633
      ],
      "gravity": [
        15.831,
        -4.733
      ],
      "frameCount": 92,
      "loopState": "static",
      "pauseReason": "out-of-view",
      "contextState": "active",
      "dpr": 2,
      "documentOverflow": 0,
      "owner": {
        "width": 759,
        "height": 808
      },
      "canvas": {
        "width": 759,
        "height": 808,
        "bufferWidth": 1517,
        "bufferHeight": 1616
      },
      "ownerViolation": false
    },
    "contextLost": {
      "state": "fallback",
      "readiness": "fallback",
      "stateHistory": "idle>loading>ready>interacting>ready>interacting>ready>fallback",
      "physicsInput": "test-pointer",
      "physicsState": "active",
      "steps": 94,
      "shakeCount": 0,
      "sensorPermission": "prompt",
      "bodyCount": 22,
      "centroid": [
        -2.837,
        1.564
      ],
      "gravity": [
        15.851,
        -4.741
      ],
      "frameCount": 93,
      "loopState": "static",
      "pauseReason": "context-lost",
      "contextState": "lost",
      "dpr": 2,
      "documentOverflow": 0,
      "owner": {
        "width": 759,
        "height": 808
      },
      "canvas": {
        "width": 0,
        "height": 0,
        "bufferWidth": 1517,
        "bufferHeight": 1616
      },
      "ownerViolation": true
    },
    "contextRestored": {
      "state": "ready",
      "readiness": "ready",
      "stateHistory": "idle>loading>ready>interacting>ready>interacting>ready>fallback>ready",
      "physicsInput": "test-pointer",
      "physicsState": "active",
      "steps": 95,
      "shakeCount": 0,
      "sensorPermission": "prompt",
      "bodyCount": 22,
      "centroid": [
        -2.738,
        1.544
      ],
      "gravity": [
        15.885,
        -4.754
      ],
      "frameCount": 96,
      "loopState": "running",
      "pauseReason": "none",
      "contextState": "restored",
      "dpr": 2,
      "documentOverflow": 0,
      "owner": {
        "width": 759,
        "height": 808
      },
      "canvas": {
        "width": 759,
        "height": 808,
        "bufferWidth": 1517,
        "bufferHeight": 1616
      },
      "ownerViolation": false
    },
    "reducedMotion": {
      "frameDelta": 0,
      "state": "reduced-motion"
    }
  },
  "fallback": {
    "state": "fallback",
    "readiness": "fallback",
    "stateHistory": "idle",
    "steps": null,
    "shakeCount": null,
    "bodyCount": null,
    "centroid": [
      null,
      null
    ],
    "gravity": [
      null,
      null
    ],
    "frameCount": null,
    "dpr": null,
    "documentOverflow": 0,
    "owner": {
      "width": 362,
      "height": 452
    },
    "canvas": {
      "width": 0,
      "height": 0,
      "bufferWidth": 300,
      "bufferHeight": 150
    },
    "ownerViolation": true
  }
}
