Repository navigation
test(cloudxr): real-browser run_oob_connect() tests against MockCloudXR, with anticipatory reliability-branch coverage - #1148
Draft
gareth-morgan-nv wants to merge 2 commits into
Draft
gareth-morgan-nv wants to merge 2 commits into
gareth-morgan-nv wants to merge 2 commits into
Conversation
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
gareth-morgan-nv
marked this pull request as draft
September 29, 2026 14:43
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
from
September 30, 2026 15:16
48d0b30 to
5954078
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
2 times, most recently
from
September 30, 2026 16:18
55922d6 to
3e68d67
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
from
October 5, 2026 17:08
41884d8 to
1ea36c4
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
from
October 5, 2026 17:29
3e68d67 to
59575f2
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
2 times, most recently
from
October 8, 2026 23:28
53cb15d to
068d47f
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
from
October 8, 2026 23:32
5f9c5b9 to
b418850
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
from
October 9, 2026 01:11
068d47f to
072d162
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
from
October 9, 2026 01:12
b418850 to
2e6a8aa
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
from
October 9, 2026 02:10
072d162 to
0ca1ace
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
from
October 9, 2026 02:13
2e6a8aa to
bef59c6
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/MockADB
branch
from
October 13, 2026 21:09
0ca1ace to
3f3a960
Compare
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
2 times, most recently
from
October 13, 2026 22:17
901cb05 to
3b11486
Compare
4 tasks done
…XR, with anticipatory reliability-branch coverage Real-browser integration tests for run_oob_connect(), standardized on MockCloudXR (npm run build:app-mock) rather than the real @nvidia/cloudxr SDK, always against a static production build (never a dev-server, to avoid webpack HMR module-duplication and React.StrictMode double-session bugs found during development). Includes anticipatory tests written against #1145/#1146 before they merged, so they fail cleanly until those branches land. Design/decisions are in oob-real-browser-integration-test-plan.md. Rebased onto #1147's current tip (gmorgan/MockADB) after #1147's own history was rewritten by its rebase onto main; squashed from the original 7-commit history to avoid replaying commits whose content already landed on #1147 under different SHAs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…ndings - RealBrowserAdb's am start/forward branches built CompletedProcess directly, bypassing the check=True handling #1147 just added to FakeAdb - a caller passing check=True (as _adb_forward_cdp() does) got no CalledProcessError on a simulated forward/am-start failure. Route both branches through the same check-honoring result() helper FakeAdb uses. - real_wss_proxy() restored TELEOP_OOB_HUB_ONLY on exit but not CXR_INSTALL_DIR, leaking it into later tests in the same process. - Removed a duplicated comment line and two stale docstrings/messages that described #1146 as not yet merged (it has, onto this branch). - Dropped static_webxr_build()'s npm_build_script/build_dir_name parameters: every call site always passed the same pair, and the other pair was explicitly "not for tests." - Extracted the three tests' identical 8-line port/dir/env setup into a shared real_browser_env() helper in conftest.py. - Trimmed oob-real-browser-integration-test-plan.md from a 404-line exploration journal (superseded sections kept alongside the final state) down to the parts that are still useful as reference: what's real vs faked, the two build bugs found, the command inventory, and the test list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
gareth-morgan-nv
force-pushed
the
gmorgan/oob-connect-tests
branch
from
October 14, 2026 16:11
3b11486 to
97f1cbf
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
run_oob_connect(), standardized on MockCloudXR (npm run build:app-mock) rather than the real@nvidia/cloudxrSDK: the real SDK genuinely tries to stream against whatever's onbackend_port, which is unpredictable and gives a test nothing to assert against. MockCloudXR mounts the identicalApp.tsx/CloudXRComponent.tsxUI with a fully deterministic, externally controllable session (window.__mockCloudXRFail(message?, code?)), and never opens a socket of its own.static_webxr_build()). Two real bugs made this necessary: webpack HMR duplicating thecloudxr-mock-alias.tsmodule instance (so the crash-trigger silently bound to an empty session), and<React.StrictMode>double-invokingCloudXR.createSession()in a dev-mode build.webpack.app-mock.jsnow builds in production mode. Also found and fixed: a stale webpack persistent filesystem cache silently serving an old bundle — cleared before every build now.gmorgan/oob-error-relaunch(cloudxr: auto-relaunch the teleop tab on a terminal client error (depends on #1138, #1145) #1146) before it's merged here — asserts on black-box observable recovery (a second realam start, a second real tab), so it fails cleanly today and should turn green once cloudxr: auto-relaunch the teleop tab on a terminal client error (depends on #1138, #1145) #1146 lands.test_build_teleop_url_forwards_reliability_config_from_env, the same "write it now, let it fail until merged" approach applied togmorgan/oob-reliability-config-wiring(cloudxr: wire client reconnect/warm-up-timeout config through OOB launch #1145)'s config forwarding — no browser needed for that one.oob-real-browser-integration-test-plan.md(repo root, §8 has the final-state summary).gmorgan/MockADB(test(cloudxr): reusable fake-adb test double (FakeAdb/mock_adb) #1147) forFakeAdb/mock_adb()— base branch unchanged.Test plan
uv run pytest test_oob_teleop_adb.py test_oob_teleop_env.py test_oob_teleop_hub.py test_fake_adb.py test_wss_static_client.py -q— 141 passed, 2 expected anticipatory failures (config-wiring, auto-relaunch — both intentionally fail until their respective branches merge)SKIP=check-copyright-year pre-commit runon all changed files — cleannpx eslint/npx prettier --checkon changed TS files — clean🤖 Generated with Claude Code