
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing
PASS Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 34 [document, 0, document, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 35 [document, 0, document, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must do nothing
PASS Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must do nothing
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must do nothing assert_equals: The operation should not update focusOffset expected 0 but got 16
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must do nothing assert_equals: The operation should not update focusOffset expected 0 but got 8
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 34 [document, 0, document, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must do nothing assert_equals: The operation should not update focusNode expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

" but got object ""
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endOffset of the Selection's last Range must match the added Range expected 2 but got 0
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "" but got object ""
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 8 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 10 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 11 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 12 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 13 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 14 [document.documentElement, 0, document.documentElement, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 20 [foreignDoc.head, 1, foreignDoc.head, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 21 [foreignDoc.body, 0, foreignDoc.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 22 [paras[0], 0, paras[0], 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 25 [detachedPara1, 0, detachedPara1, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 31 [testDiv, 1, paras[2].firstChild, 5]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 32 [document.documentElement, 1, document.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 33 [foreignDoc.documentElement, 1, foreignDoc.body, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 34 [document, 0, document, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 39 [paras[3], 1, comment, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 40 [foreignDoc, 0, foreignDoc, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 41 [foreignDoc, 1, foreignComment, 2]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 42 [foreignDoc.body, 0, foreignTextNode, 36]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 43 [xmlDoc, 0, xmlDoc, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 44 [xmlDoc, 1, xmlComment, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 45 [detachedTextNode, 0, detachedTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 46 [detachedForeignTextNode, 7, detachedForeignTextNode, 7]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 47 [detachedForeignTextNode, 0, detachedForeignTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 48 [detachedXmlTextNode, 7, detachedXmlTextNode, 7]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 49 [detachedXmlTextNode, 0, detachedXmlTextNode, 8]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 50 [detachedComment, 3, detachedComment, 4]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 51 [detachedComment, 5, detachedComment, 5]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 52 [detachedForeignComment, 0, detachedForeignComment, 1]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 53 [detachedForeignComment, 4, detachedForeignComment, 4]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 54 [detachedXmlComment, 2, detachedXmlComment, 6]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 55 [docfrag, 0, docfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 56 [foreignDocfrag, 0, foreignDocfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must not throw exceptions or modify the range it's given
PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in rangeCount being 1
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range having the specified endpoints assert_equals: startContainer of the Selection's last Range must match the added Range expected Element node <html><head><title>Selection.addRange() tests</title>
<me... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: first addRange() must result in the selection's last range being the same object we added assert_equals: getRangeAt(rangeCount - 1) must return the same object we added expected object "Selection.addRange() tests

Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
QrstuvwxYzabcdefGhijklmn





"use strict";

testAddRangeSubSet(12, 16);
testDiv.style.display = "none";
" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the first added range must modify the Selection's last Range assert_equals: After mutating the first added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
" but got Text node "Qrstuvwx"
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: modifying the Selection's last Range must modify the first added Range assert_equals: After first addRange(), after mutating the Selection's last Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 57 [xmlDocfrag, 0, xmlDocfrag, 0]: second addRange() must do nothing assert_equals: The operation should not replace a registered Range expected object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx" but got object "Äb̈c̈d̈ëf̈g̈ḧ
Ijklmnop
Qrstuvwx"

