<!doctype html>
<html>
<head>
<title>Distinct id for distinct mediastream tracks</title>
<link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/>
<link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-id">
</head>
<body>
<p class="instructions">When prompted, accept to share your audio and video stream.</p>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that distinct mediastream tracks have distinct ids.</p>

<div id='log'></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
<script src=/resources/testdriver-vendor.js></script>
<script src=permission-helper.js></script>
<script>
promise_test(async () => {
  await setMediaPermission();
  const stream = await navigator.mediaDevices.getUserMedia({video: true, audio: true})
  assert_not_equals(stream.getVideoTracks()[0], stream.getAudioTracks()[0].id, "audio and video tracks have distinct ids");
}, "Tests that distinct mediastream tracks have distinct ids ");
</script>
</body>
</html>
