diff --git a/amendments.json b/amendments.json
index bf58ebca3..94b017e70 100644
--- a/amendments.json
+++ b/amendments.json
@@ -3,6 +3,14 @@
{
"description": "Set default values of the RTCConfiguration
dictionary, aligning it with current implementations",
"pr": 2691,
+ "tests": [
+ "webrtc/RTCConfiguration-bundlePolicy.html",
+ "webrtc/RTCConfiguration-iceTransportPolicy.html",
+ "webrtc/RTCConfiguration-rtcpMuxPolicy.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43166"
+ ],
"type": "correction",
"status": "candidate",
"id": "1"
@@ -12,6 +20,7 @@
"pr": 2679,
"type": "correction",
"status": "candidate",
+ "testUpdates": "not-testable",
"id": "2"
}
],
@@ -19,6 +28,14 @@
{
"description": "Set default values of the RTCConfiguration
dictionary, aligning it with current implementations",
"pr": 2691,
+ "tests": [
+ "webrtc/RTCConfiguration-bundlePolicy.html",
+ "webrtc/RTCConfiguration-iceTransportPolicy.html",
+ "webrtc/RTCConfiguration-rtcpMuxPolicy.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43166"
+ ],
"type": "correction",
"status": "candidate",
"id": "1"
@@ -26,6 +43,12 @@
{
"description": "Validate ICE transport settings upfront when setting a configuration",
"pr": 2689,
+ "tests": [
+ "webrtc/RTCConfiguration-validation.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43167"
+ ],
"type": "correction",
"status": "candidate",
"id": 6
@@ -42,6 +65,10 @@
{
"description": "Update RTCIceGatheringState
to clarify the relevant transport it represents",
"pr": 2680,
+ "tests": [
+ "webrtc/RTCPeerConnection-iceGatheringState.https.html"
+ ],
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": "3"
@@ -51,6 +78,10 @@
{
"description": "Update RTCPeerConnectionState
to clarify the relevant transport it represents",
"pr": 2680,
+ "tests": [
+ "webrtc/RTCPeerConnection-connectionState.https.html"
+ ],
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": "3"
@@ -58,6 +89,12 @@
{
"description": "Ensure the connecting
state happens whenever a ICE or DTLS transport is new ",
"pr": 2687,
+ "tests": [
+ "webrtc/RTCPeerConnection-connectionState.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43171"
+ ],
"type": "correction",
"status": "candidate",
"id": "4"
@@ -67,6 +104,10 @@
{
"description": "Update RTCIceConnectionState
to clarify the relevant transport it represents",
"pr": 2680,
+ "tests": [
+ "webrtc/RTCPeerConnection-iceGatheringState.https.html"
+ ],
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": "3"
@@ -77,6 +118,12 @@
"description": "Forbid ICE gathering and connectivity checks on administrative prohibited candidates",
"difftype": "append",
"pr": 2708,
+ "tests": [
+ "webrtc/RTCPeerConnection-addTcpIceCandidate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#21025"
+ ],
"type": "correction",
"status": "candidate",
"id": "5"
@@ -86,6 +133,7 @@
{
"description": "Replace DOMTimeStamp
in the definition of the RTCCertificateExpiration.expires
and of RTCCertificate.expires
, and change its origin to certificate creation time",
"pr": [2686, 2700],
+ "testUpdates": "not-testable",
"type": "correction",
"status": "candidate",
"id": 7
@@ -95,6 +143,7 @@
{
"description": "Replace DOMTimeStamp
in the definition of the RTCCertificateExpiration.expires
and of RTCCertificate.expires
, and change its origin to certificate creation time",
"pr": [2686, 2700],
+ "testUpdates": "not-testable",
"type": "correction",
"status": "candidate",
"id": 7
@@ -105,6 +154,7 @@
"description": "Put ICE transport connection in failed
state when no candidates are received",
"pr": 2704,
"type": "correction",
+ "testUpdates": "not-testable",
"status": "candidate",
"id": 8
}
@@ -113,6 +163,7 @@
{
"description": "No longer queue a task in the determine DTMF algorithm",
"pr": 2742,
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": 9
@@ -122,6 +173,13 @@
{
"description": "Align MTI stats with implementations",
"pr": [2744, 2748, 2832],
+ "tests": [
+ "webrtc/RTCPeerConnection-mandatory-getStats.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#35703",
+ "web-platform-tests/wpt#43172"
+ ],
"type": "correction",
"status": "candidate",
"id": 10
@@ -131,6 +189,7 @@
{
"description": "Remove unused RTCRtpDecodingParameters dictionary",
"pr": 2753,
+ "testUpdates": "not-testable",
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -160,6 +219,12 @@
"description": "Mark RTP Pause/Resume as not supported",
"pr": 2755,
"difftype": "modify",
+ "tests": [
+ "webrtc/protocol/simulcast-answer.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#34912"
+ ],
"type": "correction",
"status": "candidate",
"id": 12
@@ -169,6 +234,12 @@
{
"description": "Add RTCIceCandidate.relayProtocol",
"pr": 2763,
+ "tests": [
+ "idlharness.https.window.js"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#36157"
+ ],
"difftype": "modify",
"type": "addition",
"status": "candidate",
@@ -179,6 +250,7 @@
{
"description": "Add deprecation notice to RTCPeerConnectionIceEvent.url",
"pr": 2773,
+ "testUpdates": "not-testable",
"type": "correction",
"status": "candidate",
"id": 23
@@ -188,6 +260,12 @@
{
"description": "Add RTCIceCandidate.relayProtocol",
"pr": 2763,
+ "tests": [
+ "idlharness.https.window.js"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#36157"
+ ],
"difftype": "append",
"type": "addition",
"status": "candidate",
@@ -196,6 +274,12 @@
{
"description": "Add RTCIceCandidate.url",
"pr": 2773,
+ "tests": [
+ "idlharness.https.window.js"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#36572"
+ ],
"difftype": "append",
"type": "addition",
"status": "candidate",
@@ -206,6 +290,7 @@
{
"description": "Remove single-value RTCIceCredentialType enum",
"pr": 2767,
+ "testUpdates": "not-testable",
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -216,6 +301,7 @@
{
"description": "Remove single-value RTCIceCredentialType enum",
"pr": 2767,
+ "testUpdates": "not-testable",
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -226,6 +312,12 @@
{
"description": "TypeError unless all or none of encodings have rids",
"pr": 2774,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 18
@@ -233,6 +325,12 @@
{
"description": "TypeError on duplicate rids",
"pr": 2775,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 18
@@ -240,6 +338,12 @@
{
"description": "Add RTCRtpEncodingParameters.maxFramerate",
"pr": 2785,
+ "tests": [
+ "webrtc/RTCRtpParameters-maxFramerate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43173"
+ ],
"type": "addition",
"status": "candidate",
"id": 19
@@ -247,6 +351,12 @@
{
"description": "Remove RTCRtpEncodingParameters.scaleResolutionDownBy for audio",
"pr": 2772,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 20
@@ -254,6 +364,12 @@
{
"description": "Remove maxFramerate like scaleResolutionDownBy for audio",
"pr": 2799,
+ "tests": [
+ "webrtc/RTCRtpParameters-maxFramerate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 24
@@ -263,6 +379,12 @@
{
"description": "Remove RTCRtpEncodingParameters.scaleResolutionDownBy for audio",
"pr": 2772,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 20
@@ -270,6 +392,12 @@
{
"description": "Default RTCRtpEncodingParameters.scaleResolutionDownBy to 1 for video",
"pr": 2772,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 21
@@ -277,6 +405,12 @@
{
"description": "Add RTCRtpEncodingParameters.maxFramerate",
"pr": 2785,
+ "tests": [
+ "webrtc/RTCRtpParameters-maxFramerate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43173"
+ ],
"type": "addition",
"status": "candidate",
"id": 19
@@ -284,6 +418,12 @@
{
"description": "Remove maxFramerate like scaleResolutionDownBy for audio",
"pr": 2799,
+ "tests": [
+ "webrtc/RTCRtpParameters-maxFramerate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 24
@@ -291,6 +431,7 @@
{
"description": "Reject setParameters(), replaceTrack(), & insertDTMF() after stop()",
"pr": 2829,
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": 32
@@ -300,6 +441,12 @@
{
"description": "Default RTCRtpEncodingParameters.scaleResolutionDownBy to 1 for video",
"pr": 2772,
+ "tests": [
+ "webrtc/RTCRtpParameters-encodings.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 21
@@ -307,6 +454,12 @@
{
"description": "Rollback restores ridless encoding trounced by sRD(simulcastOffer).",
"pr": 2797,
+ "tests": [
+ "webrtc/simulcast/negotiation-encodings.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"type": "correction",
"status": "candidate",
"id": 24
@@ -323,6 +476,12 @@
{
"description": "Add RTCRtpEncodingParameters.maxFramerate",
"pr": 2785,
+ "tests": [
+ "webrtc/RTCRtpParameters-maxFramerate.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43173"
+ ],
"type": "addition",
"status": "candidate",
"id": 19
@@ -350,6 +509,12 @@
{
"description": "Remove interaction between encoding.active and simulcast ~rid",
"pr": 2754,
+ "tests": [
+ "webrtc/protocol/simulcast-answer.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#34912"
+ ],
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -382,6 +547,12 @@
{
"description": "Remove duplicate rids in proposedSendEncodings.",
"pr": 2800,
+ "tests": [
+ "webrtc/simulcast/negotiation-encodings.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#37477"
+ ],
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -390,6 +561,14 @@
{
"description": "Ignore comma-separated rid alternatives.",
"pr": 2813,
+ "tests": [
+ "webrtc/simulcast/rid-manipulation.html",
+ "webrtc/simulcast/negotiation-encodings.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#36155",
+ "web-platform-tests/wpt#37477"
+ ],
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -418,6 +597,14 @@
{
"description": "Ignore comma-separated rid alternatives.",
"pr": 2813,
+ "tests": [
+ "webrtc/simulcast/rid-manipulation.html",
+ "webrtc/simulcast/negotiation-encodings.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#36155",
+ "web-platform-tests/wpt#37477"
+ ],
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -428,6 +615,7 @@
{
"description": "Allow encoder resolution alignment in scaleResolutionDownBy.",
"pr": 2808,
+ "testUpdates": "not-testable",
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -438,6 +626,7 @@
{
"description": "Update explanation of simulcast envelope.",
"pr": 2814,
+ "testUpdates": "not-testable",
"difftype": "modify",
"type": "correction",
"status": "candidate",
@@ -448,6 +637,7 @@
{
"description": "Create RTCRtpCodec dictionary and reuse in RTCRtpCodecCapability and RTCRtpCodecParameters definitions",
"pr": 2834,
+ "testUpdates": "not-testable",
"type": "modify",
"status": "candidate",
"id": 29
@@ -457,6 +647,7 @@
{
"description": "Make RTCRtpHeaderExtensionCapability.uri required",
"pr": 2841,
+ "testUpdates": "not-testable",
"type": "correction",
"status": "candidate",
"id": 30
@@ -466,6 +657,10 @@
{
"description": "Fix ambiguities in the setCodecPreferences() algorithm",
"pr": 2847,
+ "tests": [
+ "webrtc/RTCRtpTransceiver-setCodecPreferences.html"
+ ],
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"difftype": "append",
@@ -476,6 +671,7 @@
{
"description": "Reject setParameters(), replaceTrack(), & insertDTMF() after stop()",
"pr": 2829,
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": 32
@@ -485,6 +681,7 @@
{
"description": "Reject setParameters(), replaceTrack(), & insertDTMF() after stop()",
"pr": 2829,
+ "testUpdates": "already-tested",
"difftype": "append",
"type": "correction",
"status": "candidate",
@@ -504,6 +701,10 @@
{
"description": "Make removeTrack() a no-op after transceiver.stop()",
"pr": 2875,
+ "tests": [
+ "webrtc/RTCPeerConnection-removeTrack.https.html"
+ ],
+ "testUpdates": "already-tested",
"type": "correction",
"status": "candidate",
"id": 34
@@ -513,6 +714,10 @@
{
"description": "Don't fire connectionstatechange on pc.close()",
"pr": 2876,
+ "tests": [
+ "webrtc/RTCPeerConnection-connectionState.https.html"
+ ],
+ "testUpdates": "already-tested",
"difftype": "append",
"type": "correction",
"status": "candidate",
@@ -523,6 +728,7 @@
{
"description": "Add empty setParameterOptions as second argument to setParameters for extensibility",
"pr": 2885,
+ "testUpdates": "not-testable",
"type": "addition",
"status": "candidate",
"id": 36
@@ -532,6 +738,12 @@
{
"description": "Prevent GC of non-closed RTCDataChannels",
"pr": 2902,
+ "tests": [
+ "webrtc/RTCDataChannel-GC.https.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43369"
+ ],
"type": "correction",
"status": "candidate",
"id": 38
@@ -546,6 +758,9 @@
"tests": [
"webrtc/RTCDataChannel-binaryType.window.js"
],
+ "testUpdates": [
+ "web-platform-tests/wpt#41663"
+ ],
"id": 39
},
{
@@ -553,6 +768,29 @@
"pr": 2913,
"type": "correction",
"status": "candidate",
+ "tests": [
+ "webrtc/RTCDataChannel-binaryType.window.js",
+ "webrtc/RTCDataChannel-send.html",
+ "webrtc/RTCPeerConnection-createDataChannel.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#43601"
+ ],
+ "id": 40
+ }
+ ],
+ "setcodecpreferences-receive": [
+ {
+ "description": "setCodecPreferences only takes into account receive codecs",
+ "pr": 2926,
+ "type": "correction",
+ "status": "candidate",
+ "tests": [
+ "webrtc/RTCRtpTransceiver-setCodecPreferences.html"
+ ],
+ "testUpdates": [
+ "web-platform-tests/wpt#44318"
+ ],
"id": 40
}
],
diff --git a/amendments.md b/amendments.md
index 0718329d5..47c50ca9a 100644
--- a/amendments.md
+++ b/amendments.md
@@ -5,6 +5,8 @@
* `description`: an HTML description of what the change is,
* `difftype` (optional): defaults to "modify" (only the content of the block has changed); can also be "append" (in which case the added blocks in the editors draft should have the class `add-to-`*id*)
* `pr`: the number of the pull request where the amendment was merged (or an array thereof),
+ * `tests` (optional): list of path to WPT test files that illustrate the change,
+ * `testUpdates`: either "already-tested", "not-testable", or an array of references to WPT pull requests where the changes to WPT were added (of the form "web-platform-tests/wpt#NNN" where NNN is the number of the pull request)
* `type`: ["correction"](https://www.w3.org/2021/Process-20211102/#candidate-correction) or ["addition"](https://www.w3.org/2021/Process-20211102/#candidate-addition),
* `status`: ["candidate"](https://www.w3.org/2021/Process-20211102/#candidate-amendment) or ["proposed"](https://www.w3.org/2021/Process-20211102/#last-call-review),
* `id` (an incremented number, possibly tying together several changes made across different sections)
diff --git a/tools/check-rec-amendment.js b/tools/check-rec-amendment.js
index e605194c1..826f03280 100644
--- a/tools/check-rec-amendment.js
+++ b/tools/check-rec-amendment.js
@@ -9,8 +9,19 @@ module.exports = async ({github, context, core}) => {
return;
}
const amendments = require(process.env.GITHUB_WORKSPACE + '/amendments.json');
- if (!Object.values(amendments).find(list => list.find(a => Array.isArray(a.pr) ? a.pr.includes(context.issue.number) : a.pr === context.issue.number ))) {
- core.setFailed(`Pull request ${context.issue.number} not labeled as editorial and not referenced in amendments.json`);
+ const prAmendmentSection = Object.values(amendments).find(list => list.find(a => Array.isArray(a.pr) ? a.pr.includes(context.issue.number) : a.pr === context.issue.number ));
+ const prAmendment = prAmendmentSection.find(a => Array.isArray(a.pr) ? a.pr.includes(context.issue.number) : a.pr === context.issue.number );
+ if (!prAmendment) {
+ core.setFailed(`Pull request ${context.issue.number} not labeled as editorial and not referenced in amendments.json`);
+ }
+ if (!prAmendment.testUpdates || !prAmendment.testUpdates.length === 0) {
+ core.setFailed(`Pull request ${context.issue.number} declares an amendment but does not document its test status in testUpdates`);
+ }
+ const validTestUpdates = ["already-tested", "not-testable"];
+ if (typeof prAmendment.testUpdates === "string" && !validTestUpdates.includes(prAmendment.testUpdates)) {
+ core.setFailed(`Pull request ${context.issue.number} declares an invalid test status in its amendment testUpdates field`);
+ }
+ if (Array.isArray(prAmendment.testUpdates) && !prAmendment.testUpdates.every(t => t.match(/^web-platform-tests\/wpt#[0-9]+$/))) {
+ core.setFailed(`Pull request ${context.issue.number} declares test updates but not using the expected format to point to web-platform-tests PRs: "web-platform-tests/wpt#NNN"`);
}
-
};