Parallel test orchestrator. Runs all 9 test suites concurrently via Task sub-agents and the iwsdk CLI. Handles build, example setup, dev servers, agent launch, polling, retries, and result aggregation.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "test-all" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/immersive-web-sdk/main/.claude/skills/test-all/SKILL.md 2. Save it as ~/.claude/skills/test-all/SKILL.md 3. Reload skills and tell me it's ready
Runs all 9 IWSDK test suites simultaneously. The orchestrator handles the full lifecycle: build, example prep, dev servers, sub-agent launch, polling, retries, cleanup, and aggregate reporting.
Each test gets its own example directory and dev server. Sub-agents read the skill files and execute tests through the direct npx iwsdk flow described in each skill.
| Agent | Example Dir | Suites | Skill File |
|---|---|---|---|
| test-interactions | examples/poke | 12 | test-interactions/SKILL.md |
| test-ecs-core | examples/poke-ecs | 8 | test-ecs-core/SKILL.md |
| test-environment | examples/poke-environment | 6 | test-environment/SKILL.md |
| test-level | examples/poke-level | 5 | test-level/SKILL.md |
| test-ui | examples/poke-ui | 5 | test-ui/SKILL.md |
| test-audio | examples/audio | 6 | test-audio/SKILL.md |
| test-grab | examples/grab | 5 | test-grab/SKILL.md |
| test-locomotion | examples/locomotion | 6 | test-locomotion/SKILL.md |
| test-physics | examples/physics | 5 | test-physics/SKILL.md |
Ports are not pre-assigned. Each dev server picks its own port dynamically. The orchestrator can discover each active URL from the server logs or npx iwsdk dev status, but the sub-agent skills no longer need the port explicitly.
node -v
pnpm -v
Verify node >= 20.19.0 and pnpm is available. Stop on failure.
pnpm install
cd packages/vite-plugin-dev && npx playwright install chromium && cd ../..
pnpm build:tgz
All must succeed. Stop on failure. Note: npx playwright must run from packages/vite-plugin-dev where playwright is a dependency.
5 tests use the poke example. Clone it into separate directories so each gets its own dev server:
node scripts/test-prep.mjs clone
node scripts/test-prep.mjs install
Start all dev servers, wait for them to be ready, and discover their active URLs. This single command handles everything — starting servers, polling for readiness, and outputting the current port map:
node scripts/test-servers.mjs start
The output is JSON with the current port map: {"poke": 8084, "poke-ecs": 8082, ...}. Keep it for diagnostics, but the sub-agents should rely on the direct CLI flow inside each example directory rather than passing ports around.
If any server fails to start within 60 seconds, the script reports which ones are missing and exits with code 1. Check /tmp/iwsdk-dev-<name>.log for errors.
To re-check ports later without restarting:
node scripts/test-servers.mjs ports
For each test, launch a Task sub-agent with subagent_type: "Bash", mode: "bypassPermissions", and run_in_background: true.
Each sub-agent gets this prompt (with <SKILL_FILE>, <EXAMPLE_DIR>, and <ROOT> substituted):
Read the file at <ROOT>/.claude/skills/<SKILL_FILE> and execute the test instructions
starting from Step 3 (Verify Connectivity). Steps 1 and 2 have already been completed —
the dev server for <EXAMPLE_DIR> is already running.
Execute all test suites (Steps 3-4), then do Step 5 (cleanup and results summary).
Do NOT kill the dev server in cleanup — the parent agent will handle that.
Launch all 9 Task agents in a single message with multiple Task tool calls. This starts them concurrently.
…
Implement depth sensing occlusion in IWSDK and troubleshoot rendering issues.
Test Havok physics behaviors with the iwsdk CLI against example scenes.
Simulate grabbing objects in WebXR scenes for interaction testing and movement validation.
Test audio loading, playback, stop, and spatial audio via iwsdk CLI.
Test ECS core behaviors and example runtime via the iwsdk CLI.
Debug WebXR real-time behavior frame by frame with pause, snapshots, and diffs.