<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Testing basic video exchange from offerer to receiver</title>
        <script src="../resources/testharness.js"></script>
        <script src="../resources/testharnessreport.js"></script>
    </head>
    <body>
        <script src ="routines.js"></script>
        <script>
var track, firstConnection, secondConnection;
promise_test(async (test) => {
    let pc = new RTCPeerConnection();
    let stream = await navigator.mediaDevices.getUserMedia({ video: true });
    test.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
	let track = stream.getVideoTracks()[0];
    pc.addTrack(track, stream);
    pc.getTransceivers()[0].setCodecPreferences([{mimeType: "video/VP8", clockRate: 90000}]);
    let offer = await pc.createOffer();
    assert_true(offer.sdp.includes(`a=msid:${stream.id} ${track.id}`), 'offer SDP includes a=msid line');
}, "msid present in offer SDP after setting codec preferences");
        </script>
    </body>
</html>
