<!doctype html>
<html>
<head>
<title>getUserMedia({audio:true}) creates a stream with at least an audio track</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-NavigatorUserMedia-getUserMedia-void-MediaStreamConstraints-constraints-NavigatorUserMediaSuccessCallback-successCallback-NavigatorUserMediaErrorCallback-errorCallback">
<link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-kind">
</head>
<body>
<p class="instructions">When prompted, accept to share your audio stream.</p>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that the MediaStream object returned by
the success callback in getUserMedia has exactly one audio track.</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({audio:true});
  assert_true(stream instanceof MediaStream, "getUserMedia success callback comes with a MediaStream object");
  assert_equals(stream.getAudioTracks().length, 1, "the media stream has exactly one audio track");
  assert_equals(stream.getAudioTracks()[0].kind, "audio", "getAudioTracks() returns a sequence of tracks whose kind is 'audio'");
  assert_equals(stream.getVideoTracks().length, 0, "the media stream has zero video track");
}, "Tests that a MediaStream with exactly one audio track is returned");
</script>
</body>
</html>
