--- name: device-mode-e2e description: End-to-end test a device-mode integration change locally. Serves the SDK (local build or a released CDN), derives targeted events from the integration's implementation, generates a self-asserting HTML harness that loads the REAL connection from a write key alone, and runs it headed or headless. Reports a generic PASS/FAIL - SDK fetched sourceConfig, loaded the integration bundle, forwarded events, and actually sent data to the destination - plus a check that the destination config arrived in the SDK with the shape rudder-integrations-config says it should. Can vary a destination's config per run (configOverride) without editing the dashboard. Use when asked to "e2e test", "run e2e", "verify device mode", "test my changes", or to test an integration against a different destination config, for any browser device-mode integration. Confirming events inside the destination dashboard stays manual. argument-hint: [v3|v1.1] --- # Device-mode e2e harness **Objective:** remove the manual effort of hand-writing an HTML page, opening it, and reading the Network tab to check whether a device-mode integration change actually forwards events. Given a **write key alone**, this harness builds and serves the SDK, fires targeted events at the real connection, and reports a generic PASS/FAIL. It is **destination-agnostic**: no integration-specific verification is baked in. ## What it verifies (and what it does not) **Generic, automated (any device-mode integration):** - the SDK fetched the real `sourceConfig` from the write key **and got a 2xx**, - it loaded the device-mode integration bundle (`/js-integrations/`), - `ready()` fired and every event was forwarded without throwing, - **DATA was actually sent** to a third-party (non-localhost, non-RudderStack) host — a fetch/XHR/ beacon/pixel, _not_ merely a native-SDK `