mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-03 16:10:21 +00:00
## What Adds a **P0 data-layer assertion** to the mobile RUM masking suite: after driving the replay flow, it queries the **`_sessionreplay`** stream and requires that segments actually landed. A rendered dashboard is no longer accepted as proof that Session Replay works. This is the check that catches **#13942** — on iOS the RN Session-Replay bridge posts segments to Datadog's `/api/v2/replay` instead of OpenObserve's `/replay`, so they're rejected (401, no error surfaced) and **zero** segments reach `_sessionreplay`. RN iOS session replay silently records nothing. ## RC The masking suite verified Session Replay **only through the dashboard UI** (does the player render + is PII masked). It had no data-layer check that segments actually reached OpenObserve. So a broken upload showed only as "the replay didn't render" — ambiguous (a benign dashboard-render flake *or* a real non-upload) — and that non-render had been scoped to a skip. The bug slipped through the ambiguity. ## The fix - **P0 (data):** `maskingSuite` asserts `_sessionreplay` received segments for the session (`> 0`). Non-upload → hard fail. Platform-agnostic; catches this whole class of bug. - **P1 (privacy):** the dashboard render + PII scan stays, run only when the player paints (segments-landed-but-player-didn't = dashboard flake, not an SDK bug). - Removed the `requireReplay` skip hack. **`ios-native` masking unskipped** → runs as hard P0 (native iOS SDK uses the correct `/replay` endpoint). - **`rn-ios` masking is a plain test that hard-FAILS until #13942 is fixed** — **no skip, no expected-fail marker.** The P0 assertion sees 0 segments → red; it **passes on its own** the moment the SDK starts uploading. The fix lives in `openobserve-react-native-rum`. ## Expected result per platform | Platform | Masking (P0 upload + PII) | Why | |---|:-:|---| | rn-android | ✅ pass | RN replay works on Android | | **rn-ios** | ❌ **fail** | **#13942** — 0 replay segments | | android-native | ✅ pass | native SDK, correct endpoint | | ios-native | ✅ pass | native SDK, correct endpoint | So whenever iOS runs (the `mobile-e2e` label / an SDK dispatch), the iOS job is **red until the SDK fix lands** — an intentional, self-healing signal. ## Validation (local, real device/data runs) - `android-native` + `ios-native` masking **pass** the new P0 (segments present in `_sessionreplay`). - A non-uploading session returns **0 segments → P0 correctly fails** — the exact rn-ios symptom. Scope: only `tests/mobile-testing/` — 3 files.