WPT
wpt / webusb / usbDevice.https.any.worker.html
Spec: WebUSB API ↗
Runs: Chrome 155.0.8039.0 (wpt@ffab1bde3, 2026-09-03) | Firefox 157.0a1 (wpt@ffab1bde3, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a9df8 (wpt@9b4cabf6d, 2026-09-03) | 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 | 65/65 | 0/65 | 0/65 | 0/65 | 0/65 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| open rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| disconnection closes the device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| a device can be opened and closed | PASS | FAIL | FAIL | FAIL | FAIL | — |
| open and close can be called multiple times | PASS | FAIL | FAIL | FAIL | FAIL | — |
| open and close cannot be called again while open or close are in progress | PASS | FAIL | FAIL | FAIL | FAIL | — |
| device operations reject if an device state change is in progress | PASS | FAIL | FAIL | FAIL | FAIL | — |
| close rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| selectConfiguration rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| methods requiring it reject when the device is not open | PASS | FAIL | FAIL | FAIL | FAIL | — |
| device configuration can be set and queried | PASS | FAIL | FAIL | FAIL | FAIL | — |
| a device configuration value can be set again | PASS | FAIL | FAIL | FAIL | FAIL | — |
| selectConfiguration rejects on invalid configurations | PASS | FAIL | FAIL | FAIL | FAIL | — |
| methods requiring it reject when the device is unconfigured | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interfaces can be claimed and released | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interfaces can be claimed and released in parallel | PASS | FAIL | FAIL | FAIL | FAIL | — |
| an interface can be claimed multiple times | PASS | FAIL | FAIL | FAIL | FAIL | — |
| an interface can be released multiple times | PASS | FAIL | FAIL | FAIL | FAIL | — |
| device operations reject if an interface state change is in progress | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interfaces are released on close | PASS | FAIL | FAIL | FAIL | FAIL | — |
| a non-existent interface cannot be claimed or released | PASS | FAIL | FAIL | FAIL | FAIL | — |
| claimInterface rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| releaseInterface rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can select an alternate interface | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can select an alternate interface on a setting with non-sequential interface number | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can select an alternate interface on a setting with non-sequential alternative setting value | PASS | FAIL | FAIL | FAIL | FAIL | — |
| cannot select a non-existent alternate interface | PASS | FAIL | FAIL | FAIL | FAIL | — |
| selectAlternateInterface rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue all types of IN control transfers | PASS | FAIL | FAIL | FAIL | FAIL | — |
| device-scope IN control transfers don't require configuration | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interface-scope IN control transfers require configuration | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interface-scope IN control transfers require claiming the interface | PASS | FAIL | FAIL | FAIL | FAIL | — |
| controlTransferIn rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue all types of OUT control transfers | PASS | FAIL | FAIL | FAIL | FAIL | — |
| device-scope OUT control transfers don't require configuration | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interface-scope OUT control transfers require configuration | PASS | FAIL | FAIL | FAIL | FAIL | — |
| interface-scope OUT control transfers an interface claim | PASS | FAIL | FAIL | FAIL | FAIL | — |
| controlTransferOut rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| control transfers with a invalid request type reject | PASS | FAIL | FAIL | FAIL | FAIL | — |
| control transfers with a invalid recipient type reject | PASS | FAIL | FAIL | FAIL | FAIL | — |
| control transfers to a non-existant interface reject | PASS | FAIL | FAIL | FAIL | FAIL | — |
| requests to interfaces and endpoint require an interface claim | PASS | FAIL | FAIL | FAIL | FAIL | — |
| controlTransferOut can safely be called with a detached buffer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can clear a halt condition | PASS | FAIL | FAIL | FAIL | FAIL | — |
| clearHalt rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transfers to unavailable endpoints are rejected | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue IN interrupt transfer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue IN bulk transfer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transferIn rejects if called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue OUT bulk transfer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transferOut rejects if called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transferOut can safely be called with a detached buffer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue IN isochronous transfer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferIn rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can issue OUT isochronous transfer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferOut rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferOut rejects when called with a detached buffer | PASS | FAIL | FAIL | FAIL | FAIL | — |
| can reset the device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| resetDevice rejects when called on a disconnected device | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferOut rejects when buffer size exceeds packet lengths | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferOut rejects when packet lengths exceed buffer size | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferIn rejects when packet lengths exceed maximum size | PASS | FAIL | FAIL | FAIL | FAIL | — |
| isochronousTransferOut rejects when packet lengths exceed maximum size | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transferIn rejects when packet lengths exceed maximum size | PASS | FAIL | FAIL | FAIL | FAIL | — |
| transferOut rejects when packet lengths exceed maximum size | PASS | FAIL | FAIL | FAIL | FAIL | — |
| controlTransferOut rejects when packet lengths exceed maximum size | PASS | FAIL | FAIL | FAIL | FAIL | — |