chromium/third_party/blink/web_tests/wpt_internal/webxr/events_deviceconnect.https.html

<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/webxr/resources/webxr_util.js"></script>
<script src="/webxr/resources/webxr_test_constants.js"></script>
<canvas />
<script>
xr_promise_test("Test devicechange fires when devices are connected.",
  (t) => {
  let eventWatcher = new EventWatcher(t, navigator.xr, ["devicechange"]);

  // The event should fire when a listener is added (which EventWatcher does)
  // even if the devices are not explicity queried with navigator.xr.requestDevice().
  // Note: This behaviour is chrome specific, the spec does not explicitly
  // state when devicechange events should occur.

  let promise = eventWatcher.wait_for(["devicechange"]);

  // Timeout here is required because addEventListener sends a call to mojo to
  // register the listener on the backend, which doesn't go through until the
  // javascript pauses.
  t.step_timeout(() => {
    navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE);
  }, 100);

  return promise;

});

</script>