WPT
wpt / webrtc / transfer-datachannel.html
Spec: WebRTC ↗
Runs: Chrome 155.0.8041.0 (wpt@2c385f65e, 2026-09-04) | Firefox 157.0a1 (wpt@2c385f65e, 2026-09-04) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a7825 (wpt@2c385f65e, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | 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 | 37/37 | 37/37 | 37/37 | 0/37 | 0/37 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| offerer data channel in workers | PASS | PASS | PASS | TIMEOUT | TIMEOUT | — |
| answerer data channel in workers | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| data channel close event in worker | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Failing to transfer a data channel | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Sanity check worker shim: never initted | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Sanity check worker shim: RTCDataChannel not transferable | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Sanity check worker shim: Worker code throws on duplicate label | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Sanity check worker shim: RTCDataChannel can throw | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred RTCDataChannel has correct initial (default) attributes | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred RTCDataChannel has correct initial (non-default) attributes | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred RTCDataChannel has correct initial (non-default) attributes (maxRetransmits variant) | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred RTCDataChannel can set bufferedAmountLowThreshold/binaryType | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel open event works | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send and receive string "hello" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send and receive string "" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send and receive string "世界你好" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send Blob that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send ArrayBuffer that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send Uint8Array that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send Blob that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send ArrayBuffer that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel can send Uint8Array that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel onclose fires | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred offerer RTCDataChannel onclosing fires | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel open event works | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send and receive string "hello" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send and receive string "" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send and receive string "世界你好" | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send Blob that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send ArrayBuffer that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send Uint8Array that is received as Blob, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send Blob that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send ArrayBuffer that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel can send Uint8Array that is received as ArrayBuffer, and vice-versa | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel onclose fires | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that transferred answerer RTCDataChannel onclosing fires | PASS | PASS | PASS | NOTRUN | NOTRUN | — |
| Check that a variety of kinds of worker/non-worker DataChannel can work simultaneously | PASS | PASS | PASS | NOTRUN | NOTRUN | — |