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"`); } - };