Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /webrtc/RTCPeerConnection-remote-track-properties.https.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset=utf-8>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script>
'use strict';
async function setupPeerConnectionAndWaitForTrack(t, localTrack, localStream) {
const pc1 = createPeerConnectionWithCleanup(t);
pc1.addTrack(localTrack, localStream);
const pc2 = createPeerConnectionWithCleanup(t);
const haveTrackEvent = waitUntilEvent(pc2, "track");
await exchangeOfferAnswer(pc1, pc2);
const trackEvent = await haveTrackEvent;
return [ trackEvent.track, trackEvent.streams[0] ];
}
function testStreamId(localStream, remoteStream, kind)
{
test(() => {
assert_equals(localStream.id, remoteStream.id);
}, "Stream id for " + kind);
}
function testTrackLabel(remoteTrack, kind)
{
test(() => {
assert_equals(remoteTrack.label, "remote " + kind);
}, "Track label for " + kind);
}
promise_test(async t => {
const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "video");
const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream);
testStreamId(localStream, remoteStream, "video");
testTrackLabel(remoteTrack, "video");
}, 'Remote video track and stream');
promise_test(async t => {
const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "audio");
const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream);
testStreamId(localStream, remoteStream, "audio");
testTrackLabel(remoteTrack, "audio");
}, 'Remote audio track and stream');
promise_test(async t => {
const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "audio");
const remoteTrackIds = new Set();
for (let i = 0; i < 10; ++i) {
const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream);
remoteTrackIds.add(remoteTrack.id);
}
assert_greater_than(remoteTrackIds.size, 1, "Remote tracks should have their own id");
}, 'Remote audio track ID is different on different PCs');
promise_test(async t => {
const [localTrack, localStream] = await createTrackAndStreamWithCleanup(t, "video");
const remoteTrackIds = new Set();
for (let i = 0; i < 10; ++i) {
const [remoteTrack, remoteStream] = await setupPeerConnectionAndWaitForTrack(t, localTrack, localStream);
remoteTrackIds.add(remoteTrack.id);
}
assert_greater_than(remoteTrackIds.size, 1, "Remote tracks should have their own id");
}, 'Remote video track ID is different on different PCs');
</script>