WPT
wpt / selection / textcontrols / selectionchange.html
Spec: Selection API ↗
Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@4a01b83e3, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-a7825 (wpt@4a01b83e3, 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 | 60/60 | 60/60 | 60/60 | 59/60 | 60/60 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Modifying selectionStart value of the input element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionEnd value of the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setSelectionRange() on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionStart value on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionStart value twice on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionEnd value on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionEnd value twice on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selection range on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selection range twice on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() twice on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() after select() on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() repeatedly on the input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on empty the input element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionStart value of the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionEnd value of the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setSelectionRange() on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionStart value on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionStart value twice on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionEnd value on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionEnd value twice on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selection range on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selection range twice on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() twice on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() after select() on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() repeatedly on the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on empty the disconnected input element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionStart value of the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionEnd value of the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setSelectionRange() on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionStart value on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionStart value twice on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionEnd value on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionEnd value twice on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selection range on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selection range twice on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() twice on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() after select() on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() repeatedly on the textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on empty the textarea element | PASS | PASS | PASS | FAIL | PASS | — |
| Modifying selectionStart value of the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Modifying selectionEnd value of the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setSelectionRange() on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionStart value on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionStart value twice on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selectionEnd value on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selectionEnd value twice on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting initial zero selection range on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Setting the same selection range twice on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling select() twice on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() after select() on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() repeatedly on the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |
| Calling setRangeText() on empty the disconnected textarea element | PASS | PASS | PASS | PASS | PASS | — |