
FAIL setCodecPreferences() on audio transceiver with codecs returned from RTCRtpSender.getCapabilities('audio') should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences(capabilities.codecs)', 'transceiver.setCodecPreferences' is undefined)
FAIL setCodecPreferences() on video transceiver with codecs returned from RTCRtpReceiver.getCapabilities('video') should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences(capabilities.codecs)', 'transceiver.setCodecPreferences' is undefined)
FAIL setCodecPreferences() with both sender receiver codecs combined should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences([...capabilities1.codecs, ... capabilities2.codecs])', 'transceiver.setCodecPreferences' is undefined)
FAIL setCodecPreferences([]) should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences([])', 'transceiver.setCodecPreferences' is undefined)
FAIL setCodecPreferences() with reordered codecs should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences(codecs)', 'transceiver.setCodecPreferences' is undefined)
FAIL setCodecPreferences() on audio transceiver with codecs returned from getCapabilities('video') should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(capabilities.codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(capabilities.codecs)"
FAIL setCodecPreferences() with user defined codec should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"
FAIL setCodecPreferences() with user defined codec together with codecs returned from getCapabilities() should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"
FAIL setCodecPreferences() with modified codecs returned from getCapabilities() should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"

