chromium/third_party/blink/web_tests/fast/mediastream/MediaDevices-devicechange.html

<!DOCTYPE HTML>
<title>Test devicechange event</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>

async_test(test => {
  assert_idl_attribute(navigator, 'mediaDevices');
  assert_idl_attribute(navigator.mediaDevices, 'enumerateDevices');
  assert_idl_attribute(navigator.mediaDevices, 'ondevicechange');

  navigator.mediaDevices.addEventListener("devicechange", test.step_func_done(function() {}));

  // force device change by adding a fake device.
  // Note: Fake devices don't trigger devicechange events yet,
  // so this will time out. Instead, let it fail for now.
  // crbug.com/678561
  internals.addFakeDevice({kind: "video"}, {})
      .catch(function(e) {
    console.log('Fake devices are not functional yet.');
    assert_equals(e.name, 'TypeError', 'Check crbug.com/678561');
    // Question for reviewer: Is it better to have the test fail for now?
    test.done();
  });

});

</script>