Skip to content

Add containerized WebXR browser smoke coverage#706

Open
arussell-nvidia wants to merge 4 commits into
mainfrom
codex/cxr-3577-quickstart-e2e
Open

Add containerized WebXR browser smoke coverage#706
arussell-nvidia wants to merge 4 commits into
mainfrom
codex/cxr-3577-quickstart-e2e

Conversation

@arussell-nvidia

@arussell-nvidia arussell-nvidia commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add containerized WebXR browser smoke coverage to the existing CloudXR web-client build action.
  • Build the web client, run Jest, and run a Playwright smoke check inside an isolated container without host networking or published host ports.
  • Verify only the desktop browser/IWER path reaches the Connect-ready state; this PR does not claim full Quick Start end-to-end validation.
  • Add retry/backoff around wheel artifact URL resolution so transient post-upload lookup timeouts do not fail otherwise successful wheel publishing.

Validation

  • npm test -- --runInBand
  • GitHub Actions Build Teleop Web App passed on a8aeeffb
  • New workflow run is pending/running on ebeaa7ad for the wheel-publish retry change

Follow-up

A true Quick Start e2e should be handled separately with a system test that starts the CloudXR runtime, connects the WebXR client, sends XR/controller input, and validates the teleop example output.

Signed-off-by: Andrew Russell <arussell@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The web client gains Playwright end-to-end test support. The change adds a Playwright config, a new npm script and dev dependencies, a quick-start e2e test, and CI steps to install Chromium browser dependencies and run the new test target.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title matches the main change: adding browser smoke/e2e coverage for the WebXR client.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/cxr-3577-quickstart-e2e

Comment @coderabbitai help to get the list of available commands.

@yanziz-nvidia

Copy link
Copy Markdown
Contributor

Can we build and run tests in a container env so that you can truly test e2e without host network (and enable multiple instances on the same host?)

@arussell-nvidia

Copy link
Copy Markdown
Contributor Author

Thanks, good point. I am checking whether this e2e path can run in a containerized environment without relying on host networking, and what isolation is needed for multiple instances on one host.

Signed-off-by: Andrew Russell <arussell@nvidia.com>
@arussell-nvidia

Copy link
Copy Markdown
Contributor Author

Thanks, I pushed a follow-up commit for this. The web client action now runs the build, Jest tests, and Quick Start Playwright e2e test inside an isolated Docker container, with a per-run Docker network/container name and no host networking or published host ports. I also made the Playwright host/port/base URL configurable so the dev server can bind inside the container while the browser connects locally within that container.

Local verification before pushing:

  • npm test passed.
  • USE_LOCAL_WEBXR_ASSETS=0 npm run build passed with the existing bundle-size warnings.
  • npm run test:e2e could not complete on this Windows workstation because Chromium launch is blocked with browserType.launch: spawn EPERM; the containerized path is set up to run in CI with the Playwright image.

@arussell-nvidia

Copy link
Copy Markdown
Contributor Author

Quick CI update: Build Teleop Web App is green on commit 1079d69c, so the containerized web client build, Jest, and Quick Start Playwright e2e path passed in GitHub Actions. The broader platform matrix is still running.

@yanziz-nvidia

Copy link
Copy Markdown
Contributor

the test doesn't really test e2e?

if you look at quick start https://nvidia.github.io/IsaacTeleop/main/getting_started/quick_start.html it involves many components. We are not testing with just playwright loading the page. We need to actually connect to IT and send data and validate every steps in that quick start.


docker network create "$NETWORK_NAME" >/dev/null

docker run --rm \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Signed-off-by: Andrew Russell <arussell@nvidia.com>
@arussell-nvidia arussell-nvidia changed the title Add Quick Start WebXR e2e baseline Add containerized WebXR browser smoke coverage Jun 28, 2026
@arussell-nvidia

Copy link
Copy Markdown
Contributor Author

Thanks, you're right. I pushed a8aeeffb to stop presenting this as a Quick Start e2e test.

This PR now scopes the added coverage to a containerized WebXR browser smoke check: it builds the web client, runs Jest, and uses Playwright only to verify that the desktop browser path loads IWER and reaches the Connect-ready state without host networking or published host ports.

A true Quick Start e2e should be a separate system test that starts the CloudXR runtime, connects the WebXR client to it, sends XR/controller input, and validates the teleop example output. I'll keep this PR limited to the smaller smoke coverage rather than claiming full Quick Start validation.

Signed-off-by: Andrew Russell <arussell@nvidia.com>
@arussell-nvidia

Copy link
Copy Markdown
Contributor Author

I updated this PR so it no longer presents the added coverage as a Quick Start E2E test. The current scope is a containerized WebXR browser smoke check: build the web client, run Jest, and use Playwright to verify the desktop browser path loads IWER and reaches the Connect-ready state without host networking or published host ports.

That addresses the review feedback by separating this smoke coverage from the real multi-component Quick Start E2E work, which should remain a separate system test/design. Current checks are green/skipped and the branch is mergeable. Ready for re-review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants