Meta XR Simulator No-Code Automation Testing
Updated: Sep 3, 2026
Meta XR Simulator runs no-code automated tests for your app. No-code means the test itself contains no test code: you record real inputs once, then replay them, instead of writing programmatic assertions against your app.
A replay reproduces the same head and input motion on every run, so continuous integration can exercise the recorded path without anyone wearing a headset. Replay does not judge the outcome: it starts playback and requests session exit, and nothing more. Your CI harness supplies the verdict by enforcing a timeout and inspecting the process exit status and the runtime logs.
These are the steps to set up and run an automated test:
- Record a test.
- Replay it to confirm the recording drives your app correctly.
- Transfer your app and the recording to your test machine.
- Run the replay automatically on that machine.
Record on your development machine.
- Install and set up Meta XR Simulator with your development environment. For more info, see Getting Started with Meta XR Simulator.
- Run your app in Meta XR Simulator.
- In the simulator header, select Record session.
- Choose a save path for the recording, for example
recording.vrs. The button label changes to Stop recording. - Use a mouse and keyboard, or a connected controller, to interact with your app.
- Select Stop recording when you reach the end of the path you want to test.
- Repeat for each test case. Each one is saved to its own VRS file.
Confirm the recording drives your app the way you expect before you move it to a test machine.
- Run your app again in Meta XR Simulator.
- In the simulator header, select the upload button. Its tooltip begins with
Upload VRS file. - Choose the recording to open.
- Choose a save path for the replay output, for example
replay.vrs. - The simulator replays the recording. The button label changes to Stop playback.
- Select Stop playback to end the replay early.
Run the replay on a test machine
Copy your app and the recording to the test machine, then add a session_capture block to persistent_data.json on that machine and launch the app. The runtime replays the recording and then asks your app to exit its OpenXR session. Your app has to act on that request for the run to end, so give the CI job a timeout rather than relying on the run to free the machine by itself.
For the configuration block, the file location on Windows and macOS, and the field definitions, see
Session Capture.
Remove the session_capture block when you finish. It persists between runs and triggers another automatic replay on the next launch.