WPT
wpt / selection / setBaseAndExtent.html
Spec: Selection API ↗
Runs: Chrome 155.0.8039.0 (wpt@508cc6a62, 2026-09-03) | Firefox 157.0a1 (wpt@508cc6a62, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-56c61 (wpt@8fdda8ce4, 2026-09-03) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 120/120 | 120/120 | 120/120 | 120/120 | 120/120 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 14 [document.documentElement, 0, document.documentElement, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 14 [document.documentElement, 0, document.documentElement, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 15 [document.documentElement, 0, document.documentElement, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 15 [document.documentElement, 0, document.documentElement, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 16 [document.documentElement, 1, document.documentElement, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 16 [document.documentElement, 1, document.documentElement, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 17 [document.head, 1, document.head, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 17 [document.head, 1, document.head, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 18 [document.body, 0, document.body, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 18 [document.body, 0, document.body, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 20 [foreignDoc.head, 1, foreignDoc.head, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 21 [foreignDoc.body, 0, foreignDoc.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 21 [foreignDoc.body, 0, foreignDoc.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 22 [paras[0], 0, paras[0], 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 22 [paras[0], 0, paras[0], 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 23 [paras[0], 0, paras[0], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 23 [paras[0], 0, paras[0], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 24 [detachedPara1, 0, detachedPara1, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 24 [detachedPara1, 0, detachedPara1, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 25 [detachedPara1, 0, detachedPara1, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 25 [detachedPara1, 0, detachedPara1, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 28 [paras[0].firstChild, 3, paras[3], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 28 [paras[0].firstChild, 3, paras[3], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 29 [paras[0], 0, paras[0].firstChild, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 29 [paras[0], 0, paras[0].firstChild, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 30 [testDiv, 2, paras[4], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 30 [testDiv, 2, paras[4], 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 31 [testDiv, 1, paras[2].firstChild, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 31 [testDiv, 1, paras[2].firstChild, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 32 [document.documentElement, 1, document.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 32 [document.documentElement, 1, document.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 34 [document, 0, document, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 34 [document, 0, document, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 35 [document, 0, document, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 35 [document, 0, document, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 36 [document, 1, document, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 36 [document, 1, document, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 37 [testDiv, 0, comment, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 37 [testDiv, 0, comment, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 38 [paras[2].firstChild, 4, comment, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 38 [paras[2].firstChild, 4, comment, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 39 [paras[3], 1, comment, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 39 [paras[3], 1, comment, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 40 [foreignDoc, 0, foreignDoc, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 40 [foreignDoc, 0, foreignDoc, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 41 [foreignDoc, 1, foreignComment, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 41 [foreignDoc, 1, foreignComment, 2] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 42 [foreignDoc.body, 0, foreignTextNode, 36] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 42 [foreignDoc.body, 0, foreignTextNode, 36] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 43 [xmlDoc, 0, xmlDoc, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 43 [xmlDoc, 0, xmlDoc, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 44 [xmlDoc, 1, xmlComment, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 44 [xmlDoc, 1, xmlComment, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 45 [detachedTextNode, 0, detachedTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 45 [detachedTextNode, 0, detachedTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 50 [detachedComment, 3, detachedComment, 4] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 50 [detachedComment, 3, detachedComment, 4] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 51 [detachedComment, 5, detachedComment, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 51 [detachedComment, 5, detachedComment, 5] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 52 [detachedForeignComment, 0, detachedForeignComment, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 52 [detachedForeignComment, 0, detachedForeignComment, 1] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 53 [detachedForeignComment, 4, detachedForeignComment, 4] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 53 [detachedForeignComment, 4, detachedForeignComment, 4] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 54 [detachedXmlComment, 2, detachedXmlComment, 6] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 54 [detachedXmlComment, 2, detachedXmlComment, 6] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 55 [docfrag, 0, docfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 55 [docfrag, 0, docfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 56 [foreignDocfrag, 0, foreignDocfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 56 [foreignDocfrag, 0, foreignDocfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Range 57 [xmlDocfrag, 0, xmlDocfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| Reverse range 57 [xmlDocfrag, 0, xmlDocfrag, 0] setBaseAndExtent() | PASS | PASS | PASS | PASS | PASS | — |
| setBaseAndExtent() with index larger than length | PASS | PASS | PASS | PASS | PASS | — |
| setBaseAndExtent() with negative index | PASS | PASS | PASS | PASS | PASS | — |
| setBaseAndExtent() with null nodes | PASS | PASS | PASS | PASS | PASS | — |
| setBaseAndExtent() with too few params | PASS | PASS | PASS | PASS | PASS | — |