WPT
wpt / webrtc-ice / RTCIceTransport-extension.https.html
Spec: IceTransport Extensions for WebRTC ↗
Runs: Chrome 155.0.8042.0 (wpt@168cb0286, 2026-09-04) | Firefox 157.0a1 (wpt@1b4bc17cf, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-17043 (wpt@25681acff, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 0/31 | 0/31 | 0/31 | 0/31 | 0/31 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| RTCIceTransport constructor does not throw | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| RTCIceTransport initial properties are set | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() with { iceServers: null } should throw TypeError | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() with { iceServers: undefined } should succeed | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() with one turns server, one turn server, username, credential should succeed | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() with 2 stun servers should succeed | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() throws if closed | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() transitions gatheringState to 'gathering' | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() throws if called twice | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| eventually transition gatheringState to 'complete' | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| onicecandidate fires with null candidate before gatheringState transitions to 'complete' | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() returns at least one host candidate | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| gather() returns no candidates with { gatherPolicy: 'relay'} and no turn servers | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() throws if closed | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() throws if usernameFragment or password not set | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() throws if usernameFragment does not conform to syntax | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() throws if password does not conform to syntax | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() does not transition state to 'checking' if no remote candidates added | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() with default role sets role attribute to 'controlled' | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| start() sets role attribute to 'controlling' | FAIL | FAIL | FAIL | FAIL | FAIL | — |
| addRemoteCandidate() throws if closed | FAIL | FAIL | FAIL | — | — | — |
| addRemoteCandidate() throws on invalid candidate | FAIL | FAIL | FAIL | — | — | — |
| start() transitions state to 'checking' if one remote candidate had been added | FAIL | FAIL | FAIL | — | — | — |
| addRemoteCandidate() transitions state to 'checking' if start() had been called before | FAIL | FAIL | FAIL | — | — | — |
| start() throws if later called with a different role | FAIL | FAIL | FAIL | — | — | — |
| start() flushes remote candidates and transitions state to 'new' if later called with different remote parameters | FAIL | FAIL | FAIL | — | — | — |
| Two RTCIceTransports connect to each other | FAIL | FAIL | FAIL | — | — | — |
| Two RTCIceTransports configured with the controlling role resolve the conflict in band and still connect. | FAIL | FAIL | FAIL | — | — | — |
| Two RTCIceTransports configured with the controlled role resolve the conflict in band and still connect. | FAIL | FAIL | FAIL | — | — | — |
| Selected candidate pair changes once the RTCIceTransports connect. | FAIL | FAIL | FAIL | — | — | — |
| getSelectedCandidatePair() returns null once the RTCIceTransport is stopped. | FAIL | FAIL | FAIL | — | — | — |