WPT
wpt / editing / other / delete-without-unwrapping-first-line-of-child-block.html?method=DeleteKey&lineBreak=br
Spec: https://w3c.github.io/editing/execCommand.html ↗
Runs: Chrome 155.0.8042.0 (wpt@4eb09bcd9, 2026-09-04) | Firefox 157.0a1 (wpt@c3fcbf4ba, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-52f0f (wpt@a1ecd0c09, 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 | 35/50 | 50/50 | 0/50 | 0/50 | 0/50 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Delete at abc<br>{<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at abc<br>{<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <br>[abc<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at <br>[abc<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <br>{<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at <br>{<br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at {<br><br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at {<br><br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at [abc<br><br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at [abc<br><br><div id="child">]def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at abc<br>{<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at abc<br>{<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <br>[abc<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at <br>[abc<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <br>{<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at <br>{<br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at {<br><br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at {<br><br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at [abc<br><br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Typing "X" at [abc<br><br><div id="child">d]ef<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at abc<br>{}<br><div id="child">def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <br>{}<br><div id="child">def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at {}<br><div id="child">def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <b>abc<br>{}<br></b></b><div id="child">def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| Delete at <b>{}<br></b><div id="child">def<br>ghi</div> | PASS | PASS | FAIL | FAIL | FAIL | — |
| getTargetRanges() for Delete at abc<br>{<br><div id="child">]def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at abc<br>{<br><div id="child">]def<br>ghi</div> should return a range ending in the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at <br>[abc<br><div id="child">]def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at <br>[abc<br><div id="child">]def<br>ghi</div> should return a range ending in the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at <br>{<br><div id="child">]def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at <br>{<br><div id="child">]def<br>ghi</div> should return a range ending in the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at {<br><br><div id="child">]def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at {<br><br><div id="child">]def<br>ghi</div> should return a range ending in the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at [abc<br><br><div id="child">]def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at [abc<br><br><div id="child">]def<br>ghi</div> should return a range ending in the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at abc<br>{<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at abc<br>{<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Delete at <br>[abc<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at <br>[abc<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Delete at <br>{<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at <br>{<br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Delete at {<br><br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at {<br><br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Delete at [abc<br><br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Typing "X" at [abc<br><br><div id="child">d]ef<br>ghi</div> should return a range ends at start of the child <div> | PASS | PASS | — | — | — | — |
| getTargetRanges() for Delete at abc<br>{}<br><div id="child">def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at <br>{}<br><div id="child">def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at {}<br><div id="child">def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at <b>abc<br>{}<br></b></b><div id="child">def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |
| getTargetRanges() for Delete at <b>{}<br></b><div id="child">def<br>ghi</div> should return a range before the child <div> | FAIL | PASS | — | — | — | — |