Selection API: addRange() should be ignored if there is an existing Range.

Blink intent: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/X48eOuLmXOE

This CL increases the number of FAIL tests in external/wpt/selection/ by 336. It's
expected, and we'll update the specification and the tests later.

* editing/selection/addRange.html and addRange-merging.html:
 They are removed because they are tests for the old behavior.

BUG=353069

Review-Url: https://codereview.chromium.org/2709443002
Cr-Commit-Position: refs/heads/master@{#451581}
diff --git a/third_party/WebKit/LayoutTests/editing/editability/empty-document-stylewithcss-expected.txt b/third_party/WebKit/LayoutTests/editing/editability/empty-document-stylewithcss-expected.txt
index 3a7468c..45d240de 100644
--- a/third_party/WebKit/LayoutTests/editing/editability/empty-document-stylewithcss-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/editability/empty-document-stylewithcss-expected.txt
@@ -1,4 +1,5 @@
 CONSOLE WARNING: line 14: document.execCommand() doesn't work with an invalid HTML structure. It is corrected automatically.
+CONSOLE WARNING: line 18: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE WARNING: line 21: document.execCommand() doesn't work with an invalid HTML structure. It is corrected automatically.
 This test ensures WebKit executes StyleWithCSS properly even in an empty document.
 First negation:PASS
diff --git a/third_party/WebKit/LayoutTests/editing/selection/addRange-failures-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/addRange-failures-expected.txt
index 8e11321..a5809d6a 100644
--- a/third_party/WebKit/LayoutTests/editing/selection/addRange-failures-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/selection/addRange-failures-expected.txt
@@ -1,6 +1,4 @@
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
 CONSOLE ERROR: line 29: The given range isn't in document.
-CONSOLE ERROR: line 51: The given range and the current selection belong to two different document fragments.
 Test error handling of Selection.addRange().
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/WebKit/LayoutTests/editing/selection/addRange-merging-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/addRange-merging-expected.txt
deleted file mode 100644
index 3c6a0218..0000000
--- a/third_party/WebKit/LayoutTests/editing/selection/addRange-merging-expected.txt
+++ /dev/null
@@ -1,270 +0,0 @@
-CONSOLE WARNING: line 83: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 132: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 139: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 146: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-CONSOLE ERROR: line 153: Discontiguous selection is not supported.
-Selection.addRange() should properly merge intersecting (and don't merge discrete) ranges.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-Running: testExpandLeftToRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testExpandLeftToRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testExpandRightToLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 2), end = ([Text: 12345], 4)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 2), end = ([Text: 12345], 4)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 2), end = ([<DIV>: #container], 4)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 2), end = ([<DIV>: #container], 4)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #a], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #a], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 1), end = ([<DIV>: #container], 1)
-Running: testExpandLeftToRightAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 1), end = ([<DIV>: #container], 1)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 3)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 3)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 3)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 3)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #d], 0)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #d], 0)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #b], 0)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #b], 0)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #a], 1)
-Running: testExpandRightToLeftAdjacent (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #a], 1)
-Running: testExpandBothEnds (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandBothEnds (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testExpandBothEnds (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandBothEnds (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testExpandBothEnds (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandBothEnds (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testExpandBothEnds (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandBothEnds (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testExpandBothEnds (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testExpandBothEnds (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testDontExpand (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testDontExpand (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 4)
-Running: testDontExpand (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testDontExpand (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 4)
-Running: testDontExpand (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testDontExpand (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #e], 0)
-Running: testDontExpand (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testDontExpand (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #c], 0)
-Running: testDontExpand (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testDontExpand (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<DIV>: #container], 1)
-Running: testAddSameRange (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 2), end = ([Text: 12345], 3)
-Running: testAddSameRange (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 2), end = ([Text: 12345], 3)
-Running: testAddSameRange (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 2), end = ([<DIV>: #container], 3)
-Running: testAddSameRange (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 2), end = ([<DIV>: #container], 3)
-Running: testAddSameRange (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #d], 0)
-Running: testAddSameRange (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #d], 0)
-Running: testAddSameRange (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #a], 0), end = ([<SPAN>: #b], 0)
-Running: testAddSameRange (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #a], 0), end = ([<SPAN>: #b], 0)
-Running: testAddSameRange (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 1), end = ([<SPAN>: #a], 1)
-Running: testAddSameRange (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 1), end = ([<SPAN>: #a], 1)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 2)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 2)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 2)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 2)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #a], 0)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #a], 0)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #b], 1)
-Running: testRejectDistantRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #b], 1)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 3), end = ([Text: 12345], 4)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 3), end = ([Text: 12345], 4)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 3), end = ([<DIV>: #container], 4)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 3), end = ([<DIV>: #container], 4)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #d], 0), end = ([<SPAN>: #e], 0)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #d], 0), end = ([<SPAN>: #e], 0)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #a], 1), end = ([<DIV>: #container], 1)
-Running: testRejectDistantRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #a], 1), end = ([<DIV>: #container], 1)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 2)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 1), end = ([Text: 12345], 2)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 2)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 1), end = ([<DIV>: #container], 2)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #a], 0)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 0), end = ([<SPAN>: #a], 0)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #b], 1)
-Running: testRejectDistantCollapsedRangeAtRight (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #c], 0), end = ([<SPAN>: #b], 1)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = false)
-PASS Selection was: start = ([Text: 12345], 3), end = ([Text: 12345], 4)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeTextPositions, containerIsEditable = true)
-PASS Selection was: start = ([Text: 12345], 3), end = ([Text: 12345], 4)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<DIV>: #container], 3), end = ([<DIV>: #container], 4)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeOuterElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<DIV>: #container], 3), end = ([<DIV>: #container], 4)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #d], 0), end = ([<SPAN>: #e], 0)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeInnerElementPositions, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #d], 0), end = ([<SPAN>: #e], 0)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsBeforeNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #b], 0), end = ([<SPAN>: #c], 0)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = false)
-PASS Selection was: start = ([<SPAN>: #a], 1), end = ([<DIV>: #container], 1)
-Running: testRejectDistantCollapsedRangeAtLeft (initializePositionsFunction = initializeVisiblyEquivalentPositionsAfterNodes, containerIsEditable = true)
-PASS Selection was: start = ([<SPAN>: #a], 1), end = ([<DIV>: #container], 1)
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/WebKit/LayoutTests/editing/selection/addRange-merging.html b/third_party/WebKit/LayoutTests/editing/selection/addRange-merging.html
deleted file mode 100644
index a4db81c8..0000000
--- a/third_party/WebKit/LayoutTests/editing/selection/addRange-merging.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Range merging with Selection.addRange()</title>
-<script src="../../resources/js-test.js"></script>
-</head>
-<body>
-<script>
-description('Selection.addRange() should properly merge intersecting (and don\'t merge discrete) ranges.');
-
-var selection = window.getSelection();
-
-// Utility functions:
-function createPosition(container, offset)
-{
-    return {'container': container, 'offset': offset};
-}
-
-function createRange(startPosition, endPosition)
-{
-    var range = new Range();
-    range.setStart(startPosition.container, startPosition.offset);
-    range.setEnd(endPosition.container, endPosition.offset);
-    return range;
-}
-
-function nodeToString(node)
-{
-    switch (node.nodeType) {
-    case Node.ELEMENT_NODE:
-        return '[<' + node.tagName + '>: #' + node.id + ']';
-    case Node.TEXT_NODE:
-        return '[Text: ' + node.data + ']';
-    default:
-        return node.toString();
-    }
-}
-
-function positionToString(position)
-{
-    return '(' + nodeToString(position.container) + ', ' + position.offset + ')';
-}
-
-function selectionShouldBe(expectedStartPosition, expectedEndPosition)
-{
-    var range = selection.getRangeAt(0);
-    var actualStartPosition = createPosition(range.startContainer, range.startOffset);
-    var actualEndPosition = createPosition(range.endContainer, range.endOffset);
-    if (actualStartPosition.container === expectedStartPosition.container
-        && actualStartPosition.offset === expectedStartPosition.offset
-        && actualEndPosition.container === expectedEndPosition.container
-        && actualEndPosition.offset === expectedEndPosition.offset) {
-        testPassed('Selection was: start = ' + positionToString(expectedStartPosition) + ', end = ' + positionToString(expectedEndPosition));
-    } else {
-        testFailed('Selection should be: start = ' + positionToString(expectedStartPosition) + ', end = ' + positionToString(expectedEndPosition) + '\nbut was: start = ' + positionToString(actualStartPosition) + ', end = ' + positionToString(actualEndPosition));
-    }
-}
-
-function runSingleTest(testFunction, initializePositionsFunction, containerIsEditable)
-{
-    selection.removeAllRanges();
-    var container = document.createElement('div');
-    container.id = 'container';
-    if (containerIsEditable)
-        container.contentEditable = true;
-    document.body.appendChild(container);
-    var positions = initializePositionsFunction(container);
-    debug('Running: ' + testFunction.name + ' (initializePositionsFunction = ' + initializePositionsFunction.name + ', containerIsEditable = ' + containerIsEditable + ')');
-    testFunction(positions);
-    document.body.removeChild(container);
-}
-
-// Actual tests:
-
-// To have better coverage over the possible code paths, each test is parametarized over four document positions;
-// these positions are guaranteed to be ordered in the document order, but each position may vary in each test run.
-//
-// You can assume the selection is cleared before each test run.
-
-function testExpandLeftToRight(positions)
-{
-    selection.addRange(createRange(positions[0], positions[2]));
-    selection.addRange(createRange(positions[1], positions[3]));
-    selectionShouldBe(positions[0], positions[3]);
-}
-
-function testExpandRightToLeft(positions)
-{
-    selection.addRange(createRange(positions[1], positions[3]));
-    selection.addRange(createRange(positions[0], positions[2]));
-    selectionShouldBe(positions[0], positions[3]);
-}
-
-function testExpandLeftToRightAdjacent(positions)
-{
-    selection.addRange(createRange(positions[1], positions[2]));
-    selection.addRange(createRange(positions[2], positions[3]));
-    selectionShouldBe(positions[1], positions[3]);
-}
-
-function testExpandRightToLeftAdjacent(positions)
-{
-    selection.addRange(createRange(positions[1], positions[2]));
-    selection.addRange(createRange(positions[0], positions[1]));
-    selectionShouldBe(positions[0], positions[2]);
-}
-
-function testExpandBothEnds(positions)
-{
-    selection.addRange(createRange(positions[1], positions[2]));
-    selection.addRange(createRange(positions[0], positions[3]));
-    selectionShouldBe(positions[0], positions[3]);
-}
-
-function testDontExpand(positions)
-{
-    selection.addRange(createRange(positions[0], positions[3]));
-    selection.addRange(createRange(positions[1], positions[2]));
-    selectionShouldBe(positions[0], positions[3]);
-}
-
-function testAddSameRange(positions)
-{
-    selection.addRange(createRange(positions[1], positions[2]));
-    selection.addRange(createRange(positions[1], positions[2]));
-    selectionShouldBe(positions[1], positions[2]);
-}
-
-function testRejectDistantRangeAtRight(positions)
-{
-    selection.addRange(createRange(positions[0], positions[1]));
-    selection.addRange(createRange(positions[2], positions[3]));
-    selectionShouldBe(positions[0], positions[1]);
-}
-
-function testRejectDistantRangeAtLeft(positions)
-{
-    selection.addRange(createRange(positions[2], positions[3]));
-    selection.addRange(createRange(positions[0], positions[1]));
-    selectionShouldBe(positions[2], positions[3]);
-}
-
-function testRejectDistantCollapsedRangeAtRight(positions)
-{
-    selection.addRange(createRange(positions[0], positions[1]));
-    selection.addRange(createRange(positions[2], positions[2]));
-    selectionShouldBe(positions[0], positions[1]);
-}
-
-function testRejectDistantCollapsedRangeAtLeft(positions)
-{
-    selection.addRange(createRange(positions[2], positions[3]));
-    selection.addRange(createRange(positions[1], positions[1]));
-    selectionShouldBe(positions[2], positions[3]);
-}
-
-// Position initializers:
-
-// Each initializer function takes an argument |container| which denotes the root element which can be filled with
-// arbitrary contents. This element is created and added to the document before each test run, and removed from
-// the document after each test run.
-
-function initializeTextPositions(container)
-{
-    container.innerHTML = '12345';
-    var text = container.firstChild;
-    return [createPosition(text, 1), createPosition(text, 2), createPosition(text, 3), createPosition(text, 4)];
-}
-
-function initializeOuterElementPositions(container)
-{
-    container.innerHTML = '<span id="a">1</span><span id="b">2</span><span id="c">3</span><span id="d">4</span><span id="e">5</span>';
-    return [createPosition(container, 1), createPosition(container, 2), createPosition(container, 3), createPosition(container, 4)];
-}
-
-function initializeInnerElementPositions(container)
-{
-    container.innerHTML = '<span id="a">1</span><span id="b">2</span><span id="c">3</span><span id="d">4</span><span id="e">5</span>';
-    return [createPosition(container.childNodes[1], 0), createPosition(container.childNodes[2], 0), createPosition(container.childNodes[3], 0), createPosition(container.childNodes[4], 0)];
-}
-
-function initializeVisiblyEquivalentPositionsBeforeNodes(container)
-{
-    container.innerHTML = '<span id="a"><span id="b"><span id="c"></span></span></span>';
-    return [createPosition(container, 0), createPosition(container.firstChild, 0), createPosition(container.firstChild.firstChild, 0), createPosition(container.firstChild.firstChild.firstChild, 0)];
-}
-
-function initializeVisiblyEquivalentPositionsAfterNodes(container)
-{
-    container.innerHTML = '<span id="a"><span id="b"><span id="c"></span></span></span>';
-    return [createPosition(container.firstChild.firstChild.firstChild, 0), createPosition(container.firstChild.firstChild, 1), createPosition(container.firstChild, 1), createPosition(container, 1)];
-}
-
-var tests = [
-    testExpandLeftToRight,
-    testExpandRightToLeft,
-    testExpandLeftToRightAdjacent,
-    testExpandRightToLeftAdjacent,
-    testExpandBothEnds,
-    testDontExpand,
-    testAddSameRange,
-    testRejectDistantRangeAtRight,
-    testRejectDistantRangeAtLeft,
-    testRejectDistantCollapsedRangeAtRight,
-    testRejectDistantCollapsedRangeAtLeft
-];
-var positionInitializers = [
-    initializeTextPositions,
-    initializeOuterElementPositions,
-    initializeInnerElementPositions,
-    initializeVisiblyEquivalentPositionsBeforeNodes,
-    initializeVisiblyEquivalentPositionsAfterNodes
-];
-
-tests.forEach(function (testFunction) {
-    positionInitializers.forEach(function (initializePositionsFunction) {
-        [false, true].forEach(function (containerIsEditable) {
-            runSingleTest(testFunction, initializePositionsFunction, containerIsEditable);
-        });
-    });
-});
-</script>
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/addRange.html b/third_party/WebKit/LayoutTests/editing/selection/addRange.html
deleted file mode 100644
index 2cb613e..0000000
--- a/third_party/WebKit/LayoutTests/editing/selection/addRange.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<p>This tests Selection::addRange().  It should have no effect if the range passed to it does not intersect the currently selected range.  '3456' should be selected.</p>
-<div id="div">123456789</div>
-
-<script>
-var sel = window.getSelection();
-var div = document.getElementById("div");
-var text = div.firstChild;
-
-var range = document.createRange();
-range.setStart(text, 3);
-range.setEnd(text, 5);
-sel.addRange(range);
-
-range = document.createRange();
-range.setStart(text, 4);
-range.setEnd(text, 6);
-sel.addRange(range);
-
-range = document.createRange();
-range.setStart(text, 2);
-range.setEnd(text, 3);
-sel.addRange(range);
-
-// This should have no effect (until we support discontiguous selections) since this range doesn't intersect the currently selected range.
-range = document.createRange();
-range.setStart(text, 7);
-range.setEnd(text, 8);
-sel.addRange(range);
-
-// Ditto.
-range = document.createRange();
-range.setStart(text, 0);
-range.setEnd(text, 1);
-sel.addRange(range);
-
-</script>
diff --git a/third_party/WebKit/LayoutTests/editing/text-iterator/findString-start-search-after-selection-expected.txt b/third_party/WebKit/LayoutTests/editing/text-iterator/findString-start-search-after-selection-expected.txt
index 94e888d5..21973824c6 100644
--- a/third_party/WebKit/LayoutTests/editing/text-iterator/findString-start-search-after-selection-expected.txt
+++ b/third_party/WebKit/LayoutTests/editing/text-iterator/findString-start-search-after-selection-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 29: Discontiguous selection is not supported.
 The _before_selection_ word is before the selection, so we shouldn't be able to find it if span_to_select is selected. 
 The _in_selection_ word is in the selection and we should always be able to find it. 
 The _after_selection_ word is after the selection and we should always be able to find that too.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
index 369a175..2693a02 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-00-expected.txt
@@ -1,102 +1,42 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1736 PASS, 448 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 
@@ -129,9 +69,9 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -141,9 +81,9 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -268,7 +208,9 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -283,24 +225,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -310,7 +236,9 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -323,22 +251,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -362,15 +276,13 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -415,13 +327,12 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -445,13 +356,10 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -461,13 +369,10 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -477,13 +382,11 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -493,11 +396,11 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -570,7 +473,8 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -585,23 +489,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -611,7 +500,8 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -626,23 +516,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -652,16 +527,13 @@
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 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 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -847,9 +719,9 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -859,9 +731,9 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -986,7 +858,9 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1001,24 +875,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1028,7 +886,9 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1041,22 +901,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1080,15 +926,13 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1133,13 +977,12 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1163,13 +1006,10 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1179,13 +1019,10 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1195,13 +1032,11 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1211,11 +1046,11 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1288,7 +1123,8 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1303,23 +1139,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1329,7 +1150,8 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1344,23 +1166,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1370,16 +1177,13 @@
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 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 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1565,9 +1369,9 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1577,9 +1381,9 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1704,7 +1508,9 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1719,24 +1525,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1746,7 +1536,9 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1759,22 +1551,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1798,15 +1576,13 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1851,13 +1627,12 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1881,13 +1656,10 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1897,13 +1669,10 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1913,13 +1682,11 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1929,11 +1696,11 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2006,7 +1773,8 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2021,23 +1789,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2047,7 +1800,8 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2062,23 +1816,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2088,16 +1827,13 @@
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 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 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -2283,9 +2019,9 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -2295,9 +2031,9 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -2422,7 +2158,9 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2437,24 +2175,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -2464,7 +2186,9 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -2477,22 +2201,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -2516,15 +2226,13 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -2569,13 +2277,12 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -2599,13 +2306,10 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -2615,13 +2319,10 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -2631,13 +2332,11 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -2647,11 +2346,11 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2724,7 +2423,8 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2739,23 +2439,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2765,7 +2450,8 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2780,23 +2466,8 @@
 
 testAddRangeSubSet(0, 4);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(0, 4);
-testDiv.style.display = "none";
-"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2806,16 +2477,13 @@
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 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 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
index e684dd98..6c80527 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-04-expected.txt
@@ -1,102 +1,42 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1736 PASS, 448 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 
@@ -129,9 +69,9 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -141,9 +81,9 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -268,7 +208,9 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -283,24 +225,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -310,7 +236,9 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -323,22 +251,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -362,15 +276,13 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -415,13 +327,12 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -445,13 +356,10 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -461,13 +369,10 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -477,13 +382,11 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -493,11 +396,11 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -570,7 +473,8 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -585,23 +489,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -611,7 +500,8 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -626,23 +516,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -652,16 +527,13 @@
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 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 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -847,9 +719,9 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -859,9 +731,9 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -986,7 +858,9 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1001,24 +875,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1028,7 +886,9 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1041,22 +901,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1080,15 +926,13 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1133,13 +977,12 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1163,13 +1006,10 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1179,13 +1019,10 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1195,13 +1032,11 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1211,11 +1046,11 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1288,7 +1123,8 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1303,23 +1139,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1329,7 +1150,8 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1344,23 +1166,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1370,16 +1177,13 @@
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 5 [paras[1].firstChild, 0, paras[1].firstChild, 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 5 [paras[1].firstChild, 0, paras[1].firstChild, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1565,9 +1369,9 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1577,9 +1381,9 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1704,7 +1508,9 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1719,24 +1525,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1746,7 +1536,9 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1759,22 +1551,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1798,15 +1576,13 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1851,13 +1627,12 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1881,13 +1656,10 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1897,13 +1669,10 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1913,13 +1682,11 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1929,11 +1696,11 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2006,7 +1773,8 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2021,23 +1789,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2047,7 +1800,8 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2062,23 +1816,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2088,16 +1827,13 @@
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] 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 6 [paras[1].firstChild, 2, paras[1].firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -2283,9 +2019,9 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -2295,9 +2031,9 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -2422,7 +2158,9 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2437,24 +2175,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -2464,7 +2186,9 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -2477,22 +2201,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -2516,15 +2226,13 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -2569,13 +2277,12 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -2599,13 +2306,10 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -2615,13 +2319,10 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -2631,13 +2332,11 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -2647,11 +2346,11 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2724,7 +2423,8 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2739,23 +2439,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2765,7 +2450,8 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2780,23 +2466,8 @@
 
 testAddRangeSubSet(4, 8);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(4, 8);
-testDiv.style.display = "none";
-"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2806,16 +2477,13 @@
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] 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 7 [paras[1].firstChild, 2, paras[1].firstChild, 9] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
index f07fae65..aef98ba 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-12-expected.txt
@@ -1,54 +1,24 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1208 tests; 984 PASS, 224 FAIL, 0 TIMEOUT, 0 NOTRUN.
 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 
@@ -197,9 +167,9 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 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 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 "b̈c̈d̈" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -209,9 +179,9 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 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 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 "b̈c̈d̈e" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -336,7 +306,9 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -351,24 +323,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -378,7 +334,9 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -391,22 +349,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -430,15 +374,13 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -483,13 +425,12 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -513,13 +454,10 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: 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 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -529,13 +467,10 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: 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 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -545,13 +480,11 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 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 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -561,11 +494,11 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" 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 second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -638,7 +571,8 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -653,23 +587,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -679,7 +598,8 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -694,23 +614,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -720,16 +625,13 @@
 PASS 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 
 PASS Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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]: second addRange() must result in rangeCount being 1 
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 14 [document.documentElement, 0, document.documentElement, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -915,9 +817,9 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 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 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 "b̈c̈d̈" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -927,9 +829,9 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 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 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 "b̈c̈d̈e" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1054,7 +956,9 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1069,24 +973,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1096,7 +984,9 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1109,22 +999,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1148,15 +1024,13 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1201,13 +1075,12 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1231,13 +1104,10 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: 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 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1247,13 +1117,10 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: 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 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1263,13 +1130,11 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 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 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1279,11 +1144,11 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1356,7 +1221,8 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1371,23 +1237,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1397,7 +1248,8 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second 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]: second addRange() must result in rangeCount being 1 
-PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1412,23 +1264,8 @@
 
 testAddRangeSubSet(12, 16);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(12, 16);
-testDiv.style.display = "none";
-"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
@@ -1438,16 +1275,13 @@
 PASS 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 
 PASS Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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]: second addRange() must result in rangeCount being 1 
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 15 [document.documentElement, 0, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added 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]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 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 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
index a13058b..fa64c90c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-16-expected.txt
@@ -1,78 +1,33 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 1696 tests; 1396 PASS, 300 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1696 tests; 1360 PASS, 336 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 16 [document.documentElement, 1, 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 
@@ -105,9 +60,9 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -117,9 +72,9 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -244,7 +199,9 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -259,24 +216,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -286,7 +227,9 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -299,22 +242,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -338,15 +267,13 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -391,13 +318,12 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -421,13 +347,10 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -437,13 +360,10 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -453,13 +373,11 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -469,11 +387,11 @@
 PASS Range 16 [document.documentElement, 1, 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 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -546,7 +464,8 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -561,23 +480,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -587,7 +491,8 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -602,23 +507,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -628,16 +518,13 @@
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 16 [document.documentElement, 1, 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 16 [document.documentElement, 1, document.documentElement, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -823,9 +710,9 @@
 PASS Range 17 [document.head, 1, document.head, 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 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -835,9 +722,9 @@
 PASS Range 17 [document.head, 1, document.head, 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 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -962,7 +849,9 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -977,24 +866,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1004,7 +877,9 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1017,22 +892,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1056,15 +917,13 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1109,13 +968,12 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1139,13 +997,10 @@
 PASS Range 17 [document.head, 1, document.head, 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 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1155,13 +1010,10 @@
 PASS Range 17 [document.head, 1, document.head, 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 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1171,13 +1023,11 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1187,11 +1037,11 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1264,7 +1114,8 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1279,23 +1130,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1305,7 +1141,8 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1320,23 +1157,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1346,16 +1168,13 @@
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 17 [document.head, 1, document.head, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 17 [document.head, 1, document.head, 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 17 [document.head, 1, document.head, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1541,9 +1360,9 @@
 PASS Range 18 [document.body, 0, document.body, 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 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1553,9 +1372,9 @@
 PASS Range 18 [document.body, 0, document.body, 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 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1680,7 +1499,9 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1695,24 +1516,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1722,7 +1527,9 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1735,22 +1542,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1774,15 +1567,13 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1827,13 +1618,12 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1857,13 +1647,10 @@
 PASS Range 18 [document.body, 0, document.body, 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 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1873,13 +1660,10 @@
 PASS Range 18 [document.body, 0, document.body, 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 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1889,13 +1673,11 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1905,11 +1687,11 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1982,7 +1764,8 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1997,23 +1780,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2023,7 +1791,8 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2038,23 +1807,8 @@
 
 testAddRangeSubSet(16, 20);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(16, 20);
-testDiv.style.display = "none";
-"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2064,16 +1818,13 @@
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 18 [document.body, 0, document.body, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 18 [document.body, 0, document.body, 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 18 [document.body, 0, document.body, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
index 6c4ce32..55e99ae 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-20-expected.txt
@@ -1,54 +1,24 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1208 tests; 984 PASS, 224 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
 PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
 PASS Range 20 [foreignDoc.head, 1, foreignDoc.head, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
@@ -197,9 +167,9 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -209,9 +179,9 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -336,7 +306,9 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -351,24 +323,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -378,7 +334,9 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -391,22 +349,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -430,15 +374,13 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -483,13 +425,12 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -513,13 +454,10 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -529,13 +467,10 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -545,13 +480,11 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -561,11 +494,11 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -638,7 +571,8 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -653,23 +587,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -679,7 +598,8 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -694,23 +614,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -720,16 +625,13 @@
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 22 [paras[0], 0, paras[0], 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 22 [paras[0], 0, paras[0], 0] 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 22 [paras[0], 0, paras[0], 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -915,9 +817,9 @@
 PASS Range 23 [paras[0], 0, paras[0], 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 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -927,9 +829,9 @@
 PASS Range 23 [paras[0], 0, paras[0], 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 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1054,7 +956,9 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1069,24 +973,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1096,7 +984,9 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1109,22 +999,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1148,15 +1024,13 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1201,13 +1075,12 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1231,13 +1104,10 @@
 PASS Range 23 [paras[0], 0, paras[0], 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 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1247,13 +1117,10 @@
 PASS Range 23 [paras[0], 0, paras[0], 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 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1263,13 +1130,11 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1279,11 +1144,11 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1356,7 +1221,8 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1371,23 +1237,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1397,7 +1248,8 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1412,23 +1264,8 @@
 
 testAddRangeSubSet(20, 24);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(20, 24);
-testDiv.style.display = "none";
-"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1438,16 +1275,13 @@
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 23 [paras[0], 0, paras[0], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 23 [paras[0], 0, paras[0], 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 23 [paras[0], 0, paras[0], 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
index 16efcb5..ddb0e0a 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-24-expected.txt
@@ -114,57 +114,27 @@
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 1208 tests; 1008 PASS, 200 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1208 tests; 984 PASS, 224 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must do nothing 
 PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1]: first addRange() must do nothing 
 PASS Range 24 [detachedPara1, 0, detachedPara1, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: first addRange() must do nothing 
@@ -313,9 +283,9 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -325,9 +295,9 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -452,7 +422,9 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -467,24 +439,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -494,7 +450,9 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -507,22 +465,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -546,15 +490,13 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -599,13 +541,12 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -629,13 +570,10 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -645,13 +583,10 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -661,13 +596,11 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -677,11 +610,11 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -754,7 +687,8 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -769,23 +703,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -795,7 +714,8 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -810,23 +730,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -836,16 +741,13 @@
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] 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 26 [paras[0].firstChild, 0, paras[1].firstChild, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1031,9 +933,9 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1043,9 +945,9 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1170,7 +1072,9 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1185,24 +1089,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1212,7 +1100,9 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1225,22 +1115,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1264,15 +1140,13 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1317,13 +1191,12 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1347,13 +1220,10 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1363,13 +1233,10 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1379,13 +1246,11 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1395,11 +1260,11 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1472,7 +1337,8 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1487,23 +1353,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1513,7 +1364,8 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1528,23 +1380,8 @@
 
 testAddRangeSubSet(24, 28);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(24, 28);
-testDiv.style.display = "none";
-"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1554,16 +1391,13 @@
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] 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 27 [paras[0].firstChild, 0, paras[1].firstChild, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
index dccdd28..4c6a241 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-28-expected.txt
@@ -1,102 +1,42 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1736 PASS, 448 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 
@@ -129,9 +69,9 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -141,9 +81,9 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -268,7 +208,9 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -283,24 +225,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -310,7 +236,9 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -323,22 +251,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -362,15 +276,13 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -415,13 +327,12 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -445,13 +356,10 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -461,13 +369,10 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -477,13 +382,11 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -493,11 +396,11 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -570,7 +473,8 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -585,23 +489,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -611,7 +500,8 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -626,23 +516,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -652,16 +527,13 @@
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 28 [paras[0].firstChild, 3, paras[3], 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 28 [paras[0].firstChild, 3, paras[3], 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -847,9 +719,9 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -859,9 +731,9 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -986,7 +858,9 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1001,24 +875,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1028,7 +886,9 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1041,22 +901,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1080,15 +926,13 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1133,13 +977,12 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1163,13 +1006,10 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1179,13 +1019,10 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1195,13 +1032,11 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1211,11 +1046,11 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1288,7 +1123,8 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1303,23 +1139,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1329,7 +1150,8 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1344,23 +1166,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1370,16 +1177,13 @@
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 29 [paras[0], 0, paras[0].firstChild, 7] 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 29 [paras[0], 0, paras[0].firstChild, 7] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1565,9 +1369,9 @@
 PASS Range 30 [testDiv, 2, paras[4], 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 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1577,9 +1381,9 @@
 PASS Range 30 [testDiv, 2, paras[4], 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 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1704,7 +1508,9 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1719,24 +1525,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1746,7 +1536,9 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1759,22 +1551,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1798,15 +1576,13 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1851,13 +1627,12 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1881,13 +1656,10 @@
 PASS Range 30 [testDiv, 2, paras[4], 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 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1897,13 +1669,10 @@
 PASS Range 30 [testDiv, 2, paras[4], 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 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1913,13 +1682,11 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1929,11 +1696,11 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2006,7 +1773,8 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2021,23 +1789,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2047,7 +1800,8 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2062,23 +1816,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2088,16 +1827,13 @@
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 30 [testDiv, 2, paras[4], 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 30 [testDiv, 2, paras[4], 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 30 [testDiv, 2, paras[4], 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -2283,9 +2019,9 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -2295,9 +2031,9 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -2422,7 +2158,9 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2437,24 +2175,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -2464,7 +2186,9 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -2477,22 +2201,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -2516,15 +2226,13 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -2569,13 +2277,12 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -2599,13 +2306,10 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -2615,13 +2319,10 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -2631,13 +2332,11 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -2647,11 +2346,11 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2724,7 +2423,8 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2739,23 +2439,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2765,7 +2450,8 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2780,23 +2466,8 @@
 
 testAddRangeSubSet(28, 32);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(28, 32);
-testDiv.style.display = "none";
-"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2806,16 +2477,13 @@
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 31 [testDiv, 1, paras[2].firstChild, 5] 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 31 [testDiv, 1, paras[2].firstChild, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
index ca8e651..9ead3ce 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-32-expected.txt
@@ -1,78 +1,33 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 1696 tests; 1396 PASS, 300 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 1696 tests; 1360 PASS, 336 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 
@@ -105,9 +60,9 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -117,9 +72,9 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -244,7 +199,9 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -259,24 +216,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -286,7 +227,9 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -299,22 +242,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -338,15 +267,13 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -391,13 +318,12 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -421,13 +347,10 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -437,13 +360,10 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -453,13 +373,11 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -469,11 +387,11 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -546,7 +464,8 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -561,23 +480,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -587,7 +491,8 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -602,23 +507,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -628,16 +518,13 @@
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 32 [document.documentElement, 1, document.body, 0] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 32 [document.documentElement, 1, document.body, 0] 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 32 [document.documentElement, 1, document.body, 0] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -881,9 +768,9 @@
 PASS Range 34 [document, 0, document, 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 
 PASS Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -893,9 +780,9 @@
 PASS Range 34 [document, 0, document, 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 
 PASS Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1020,7 +907,9 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1035,24 +924,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1062,7 +935,9 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1075,22 +950,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1114,15 +975,13 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1167,13 +1026,12 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1197,13 +1055,10 @@
 PASS Range 34 [document, 0, document, 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 
 PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1213,13 +1068,10 @@
 PASS Range 34 [document, 0, document, 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 
 PASS Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1229,13 +1081,11 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1245,11 +1095,11 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1322,7 +1172,8 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1337,23 +1188,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1363,7 +1199,8 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1378,23 +1215,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1404,16 +1226,13 @@
 PASS Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 34 [document, 0, document, 1] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 34 [document, 0, document, 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 34 [document, 0, document, 1] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1599,9 +1418,9 @@
 PASS Range 35 [document, 0, document, 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 
 PASS Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1611,9 +1430,9 @@
 PASS Range 35 [document, 0, document, 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 
 PASS Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1738,7 +1557,9 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1753,24 +1574,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1780,7 +1585,9 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1793,22 +1600,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1832,15 +1625,13 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1885,13 +1676,12 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1915,13 +1705,10 @@
 PASS Range 35 [document, 0, document, 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 
 PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1931,13 +1718,10 @@
 PASS Range 35 [document, 0, document, 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 
 PASS Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1947,13 +1731,11 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1963,11 +1745,11 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2040,7 +1822,8 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2055,23 +1838,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2081,7 +1849,8 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2096,23 +1865,8 @@
 
 testAddRangeSubSet(32, 36);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(32, 36);
-testDiv.style.display = "none";
-"
-FAIL Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2122,16 +1876,13 @@
 PASS Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 35 [document, 0, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 35 [document, 0, document, 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 35 [document, 0, document, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
index 0184bd0..1d81d91a 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/selection/addRange-36-expected.txt
@@ -1,102 +1,42 @@
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE WARNING: line 24: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
-CONSOLE ERROR: line 24: Discontiguous selection is not supported.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
+CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 CONSOLE ERROR: line 8: The given range isn't in document.
 This is a testharness.js-based test.
-Found 2184 tests; 1784 PASS, 400 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 2184 tests; 1736 PASS, 448 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0]: first addRange() must result in rangeCount being 1 
 PASS Range 36 [document, 1, document, 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 
@@ -129,9 +69,9 @@
 PASS Range 36 [document, 1, document, 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 
 PASS Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -141,9 +81,9 @@
 PASS Range 36 [document, 1, document, 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 
 PASS Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -268,7 +208,9 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -283,24 +225,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -310,7 +236,9 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -323,22 +251,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -362,15 +276,13 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -415,13 +327,12 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -445,13 +356,10 @@
 PASS Range 36 [document, 1, document, 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 
 PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -461,13 +369,10 @@
 PASS Range 36 [document, 1, document, 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 
 PASS Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -477,13 +382,11 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -493,11 +396,11 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -570,7 +473,8 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -585,23 +489,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -611,7 +500,8 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -626,23 +516,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -652,16 +527,13 @@
 PASS Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 36 [document, 1, document, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 36 [document, 1, document, 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 36 [document, 1, document, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -847,9 +719,9 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -859,9 +731,9 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -986,7 +858,9 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1001,24 +875,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1028,7 +886,9 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1041,22 +901,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1080,15 +926,13 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1133,13 +977,12 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1163,13 +1006,10 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1179,13 +1019,10 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1195,13 +1032,11 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1211,11 +1046,11 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -1288,7 +1123,8 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1303,23 +1139,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -1329,7 +1150,8 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1344,23 +1166,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -1370,16 +1177,13 @@
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 37 [testDiv, 0, comment, 5] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 37 [testDiv, 0, comment, 5] 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 37 [testDiv, 0, comment, 5] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -1565,9 +1369,9 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -1577,9 +1381,9 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -1704,7 +1508,9 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -1719,24 +1525,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -1746,7 +1536,9 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -1759,22 +1551,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -1798,15 +1576,13 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -1851,13 +1627,12 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -1881,13 +1656,10 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -1897,13 +1669,10 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -1913,13 +1682,11 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -1929,11 +1696,11 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2006,7 +1773,8 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2021,23 +1789,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2047,7 +1800,8 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2062,23 +1816,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2088,16 +1827,13 @@
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 38 [paras[2].firstChild, 4, comment, 2] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 38 [paras[2].firstChild, 4, comment, 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 38 [paras[2].firstChild, 4, comment, 2] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
@@ -2283,9 +2019,9 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object "b̈c̈d̈"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: second 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 "b̈c̈d̈" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: first addRange() must result in rangeCount being 1 
@@ -2295,9 +2031,9 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object "b̈c̈d̈e"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 2
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 2 but got 6
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: second 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 "b̈c̈d̈e" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0]: first addRange() must result in rangeCount being 1 
@@ -2422,7 +2158,9 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2437,24 +2175,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 15 [document.documentElement, 0, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: first addRange() must result in rangeCount being 1 
@@ -2464,7 +2186,9 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
 QrstuvwxYzabcdefGhijklmn
@@ -2477,22 +2201,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <html><head><title>Selection.addRange() tests</title>
-<me...
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 16 [document.documentElement, 1, document.documentElement, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 17 [document.head, 1, document.head, 1]: first addRange() must result in rangeCount being 1 
@@ -2516,15 +2226,13 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <body><div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 18 [document.body, 0, document.body, 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 19 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]: first addRange() must result in rangeCount being 1 
@@ -2569,13 +2277,12 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
 "
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 23 [paras[0], 0, paras[0], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 24 [detachedPara1, 0, detachedPara1, 0]: first addRange() must result in rangeCount being 1 
@@ -2599,13 +2306,10 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 26 [paras[0].firstChild, 0, paras[1].firstChild, 0]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: first addRange() must result in rangeCount being 1 
@@ -2615,13 +2319,10 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, endContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Text node "Ijklmnop
-"
+Ijklmnop" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 27 [paras[0].firstChild, 0, paras[1].firstChild, 8]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: first addRange() must result in rangeCount being 1 
@@ -2631,13 +2332,11 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: startOffset of the Selection's last Range must match the added Range expected 3 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: second 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 "̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdef" but got object "̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdef"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 3
+QrstuvwxYzabcdef" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 28 [paras[0].firstChild, 3, paras[3], 1]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: first addRange() must result in rangeCount being 1 
@@ -2647,11 +2346,11 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second addRange() must result in the selection's last range having the specified endpoints 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object "Äb̈c̈d"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p>
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 <p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p> but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: second 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 "Äb̈c̈d" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 29 [paras[0], 0, paras[0].firstChild, 7]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 30 [testDiv, 2, paras[4], 1]: first addRange() must result in rangeCount being 1 
@@ -2724,7 +2423,8 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2739,23 +2439,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 35 [document, 0, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: first addRange() must result in rangeCount being 1 
@@ -2765,7 +2450,8 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in rangeCount being 1 
-PASS Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: second addRange() must result in the selection's last range having the specified endpoints 
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: second 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 Document node with 2 children but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: second 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
 
 Äb̈c̈d̈ëf̈g̈ḧ
@@ -2780,23 +2466,8 @@
 
 testAddRangeSubSet(36, 40);
 testDiv.style.display = "none";
-" but got object "Selection.addRange() tests
-
-Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn
-
-
-
-
-
-"use strict";
-
-testAddRangeSubSet(36, 40);
-testDiv.style.display = "none";
-"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Document node with 2 children
+" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 36 [document, 1, document, 2]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: first addRange() must result in rangeCount being 1 
@@ -2806,16 +2477,13 @@
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the first added Range 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must not throw exceptions or modify the range it's given 
 PASS Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in rangeCount being 1 
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: second addRange() must result in the selection's last range having the specified endpoints assert_equals: endContainer of the Selection's last Range must match the added Range expected Comment node <!--Alphabet soup?--> but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
+</p><p id="b" s... but got Text node "Äb̈c̈d̈ëf̈g̈ḧ
+"
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: second 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 "Äb̈c̈d̈ëf̈g̈ḧ
 Ijklmnop
-QrstuvwxYzabcdefGhijklmn" but got object "Äb̈c̈d̈ëf̈g̈ḧ
-Ijklmnop
-QrstuvwxYzabcdefGhijklmn"
-FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startContainer of the Selection's last Range must match the added Range expected Text node "Äb̈c̈d̈ëf̈g̈ḧ
-" but got Element node <div id="test"><p id="a">Äb̈c̈d̈ëf̈g̈ḧ
-</p><p id="b" s...
+QrstuvwxYzabcdefGhijklmn" but got object ""
+FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the second added range must modify the Selection's last Range assert_equals: After mutating the second added Range, startOffset of the Selection's last Range must match the added Range expected 0 but got 6
 FAIL Range 39 [paras[3], 1, comment, 8] followed by Range 37 [testDiv, 0, comment, 5]: modifying the Selection's last Range must modify the second added Range assert_equals: After second 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
 PASS Range 39 [paras[3], 1, comment, 8] 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 39 [paras[3], 1, comment, 8] followed by Range 38 [paras[2].firstChild, 4, comment, 2]: first addRange() must result in rangeCount being 1 
diff --git a/third_party/WebKit/LayoutTests/fast/css/first-letter-rtc-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/css/first-letter-rtc-crash-expected.txt
index 9c31c0b..594e02e 100644
--- a/third_party/WebKit/LayoutTests/fast/css/first-letter-rtc-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/css/first-letter-rtc-crash-expected.txt
@@ -1,12 +1,4 @@
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE WARNING: line 21: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
-CONSOLE ERROR: line 21: Discontiguous selection is not supported.
+CONSOLE WARNING: line 21: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 CONSOLE ERROR: line 38: Uncaught HierarchyRequestError: Failed to execute 'insertNode' on 'Range': The node to be inserted contains the insertion point; it may not be inserted into itself.
-texta
+a
 Test passes if it does not CRASH.
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalidation/selection-pseudo-expected.txt b/third_party/WebKit/LayoutTests/fast/css/invalidation/selection-pseudo-expected.txt
index 3272a70..4936d9c2 100644
--- a/third_party/WebKit/LayoutTests/fast/css/invalidation/selection-pseudo-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/css/invalidation/selection-pseudo-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 43: Discontiguous selection is not supported.
 Style invalidation for ::selection
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-contentEditable-crash-expected.txt b/third_party/WebKit/LayoutTests/fullscreen/full-screen-contentEditable-crash-expected.txt
index 0efc0ca..2799b65 100644
--- a/third_party/WebKit/LayoutTests/fullscreen/full-screen-contentEditable-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-contentEditable-crash-expected.txt
@@ -1,3 +1,3 @@
-CONSOLE WARNING: line 22: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
+CONSOLE WARNING: line 22: The behavior that Selection.addRange() merges existing Range and the specified Range was removed. See https://www.chromestatus.com/features/6680566019653632 for more details.
 Pass if there is no crash.
 Click anywhere to test manually.
diff --git a/third_party/WebKit/LayoutTests/platform/android/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/android/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index 999d3d4..831eb221 100644
--- a/third_party/WebKit/LayoutTests/platform/android/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/android/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: Discontiguous selection is not supported.
 PASS repainted when expected
 PASS repainted when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.png
deleted file mode 100644
index 8802d62e..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.txt
deleted file mode 100644
index a006f41..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/editing/selection/addRange-expected.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-CONSOLE WARNING: line 17: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 28: Discontiguous selection is not supported.
-CONSOLE ERROR: line 34: Discontiguous selection is not supported.
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x40
-        LayoutText {#text} at (0,0) size 765x39
-          text run at (0,0) width 200: "This tests Selection::addRange(). "
-          text run at (200,0) width 565: "It should have no effect if the range passed to it does not intersect the currently selected range."
-          text run at (0,20) width 157: "'3456' should be selected."
-      LayoutBlockFlow {DIV} at (0,56) size 784x20
-        LayoutText {#text} at (0,0) size 72x19
-          text run at (0,0) width 72: "123456789"
-selection start: position 2 of child 0 {#text} of child 2 {DIV} of body
-selection end:   position 6 of child 0 {#text} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.png
deleted file mode 100644
index 020b5b0..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.txt
deleted file mode 100644
index 8ef877c..0000000
--- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/addRange-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-CONSOLE WARNING: line 17: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 28: Discontiguous selection is not supported.
-CONSOLE ERROR: line 34: Discontiguous selection is not supported.
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x36
-        LayoutText {#text} at (0,0) size 777x36
-          text run at (0,0) width 216: "This tests Selection::addRange(). "
-          text run at (215,0) width 562: "It should have no effect if the range passed to it does not intersect the currently selected"
-          text run at (0,18) width 44: "range. "
-          text run at (43,18) width 164: "'3456' should be selected."
-      LayoutBlockFlow {DIV} at (0,52) size 784x18
-        LayoutText {#text} at (0,0) size 72x18
-          text run at (0,0) width 72: "123456789"
-selection start: position 2 of child 0 {#text} of child 2 {DIV} of body
-selection end:   position 6 of child 0 {#text} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.png
deleted file mode 100644
index a58fa9b..0000000
--- a/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.txt
deleted file mode 100644
index cac62d66..0000000
--- a/third_party/WebKit/LayoutTests/platform/win/editing/selection/addRange-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-CONSOLE WARNING: line 17: The behavior that Selection.addRange() merges existing Range and the specified Range is deprecated and will be removed in M58, around April 2017. See https://www.chromestatus.com/features/6680566019653632 for more details.
-CONSOLE ERROR: line 28: Discontiguous selection is not supported.
-CONSOLE ERROR: line 34: Discontiguous selection is not supported.
-layer at (0,0) size 800x600
-  LayoutView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  LayoutBlockFlow {HTML} at (0,0) size 800x600
-    LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutBlockFlow {P} at (0,0) size 784x36
-        LayoutText {#text} at (0,0) size 777x35
-          text run at (0,0) width 216: "This tests Selection::addRange(). "
-          text run at (215,0) width 562: "It should have no effect if the range passed to it does not intersect the currently selected"
-          text run at (0,18) width 44: "range. "
-          text run at (43,18) width 164: "'3456' should be selected."
-      LayoutBlockFlow {DIV} at (0,52) size 784x18
-        LayoutText {#text} at (0,0) size 72x17
-          text run at (0,0) width 72: "123456789"
-selection start: position 2 of child 0 {#text} of child 2 {DIV} of body
-selection end:   position 6 of child 0 {#text} of child 2 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt b/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
index f97dd19..dded8e3 100644
--- a/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-repaint-if-scrolling-composited-layers-expected.txt
@@ -1,4 +1,3 @@
-CONSOLE ERROR: line 56: Discontiguous selection is not supported.
 PASS repainted when expected
 FAIL did not repaint when expected
 PASS repainted when expected
diff --git a/third_party/WebKit/Source/core/editing/DOMSelection.cpp b/third_party/WebKit/Source/core/editing/DOMSelection.cpp
index ae43837..fdfcf27a 100644
--- a/third_party/WebKit/Source/core/editing/DOMSelection.cpp
+++ b/third_party/WebKit/Source/core/editing/DOMSelection.cpp
@@ -611,7 +611,7 @@
   // no longer performs synchronous layout by itself.
   frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets();
 
-  if (selection.isNone()) {
+  if (rangeCount() == 0) {
     selection.setSelectedRange(EphemeralRange(newRange), VP_DEFAULT_AFFINITY);
     cacheRangeIfSelectionOfDocument(newRange);
     return;
@@ -619,17 +619,8 @@
 
   Range* originalRange = selection.firstRange();
 
-  if (originalRange->startContainer()->document() !=
-      newRange->startContainer()->document()) {
-    addConsoleError(
-        "The given range does not belong to the current selection's document.");
-    return;
-  }
   if (originalRange->startContainer()->treeScope() !=
       newRange->startContainer()->treeScope()) {
-    addConsoleError(
-        "The given range and the current selection belong to two different "
-        "document fragments.");
     return;
   }
 
@@ -637,32 +628,14 @@
                                            ASSERT_NO_EXCEPTION) < 0 ||
       newRange->compareBoundaryPoints(Range::kStartToEnd, originalRange,
                                       ASSERT_NO_EXCEPTION) < 0) {
-    addConsoleError("Discontiguous selection is not supported.");
     return;
   }
 
-  // FIXME: "Merge the ranges if they intersect" is Blink-specific behavior;
-  // other browsers supporting discontiguous selection (obviously) keep each
-  // Range added and return it in getRangeAt(). But it's unclear if we can
-  // really do the same, since we don't support discontiguous selection. Further
-  // discussions at
+  // TODO(tkent): "Merge the ranges if they intersect" was removed. We show a
+  // warning message for a while, and continue to collect the usage data.
   // <https://code.google.com/p/chromium/issues/detail?id=353069>.
   Deprecation::countDeprecation(frame(),
                                 UseCounter::SelectionAddRangeIntersect);
-
-  Range* start = originalRange->compareBoundaryPoints(
-                     Range::kStartToStart, newRange, ASSERT_NO_EXCEPTION) < 0
-                     ? originalRange
-                     : newRange;
-  Range* end = originalRange->compareBoundaryPoints(Range::kEndToEnd, newRange,
-                                                    ASSERT_NO_EXCEPTION) < 0
-                   ? newRange
-                   : originalRange;
-  const EphemeralRange merged =
-      EphemeralRange(start->startPosition(), end->endPosition());
-  TextAffinity affinity = selection.selection().affinity();
-  selection.setSelectedRange(merged, affinity);
-  cacheRangeIfSelectionOfDocument(createRange(merged));
 }
 
 void DOMSelection::deleteFromDocument() {
diff --git a/third_party/WebKit/Source/core/frame/Deprecation.cpp b/third_party/WebKit/Source/core/frame/Deprecation.cpp
index 79bdd6a..86fb5c4 100644
--- a/third_party/WebKit/Source/core/frame/Deprecation.cpp
+++ b/third_party/WebKit/Source/core/frame/Deprecation.cpp
@@ -418,10 +418,10 @@
       return willBeRemoved("\"zoom: document\"", M59, "4997605029314560");
 
     case UseCounter::SelectionAddRangeIntersect:
-      return willBeRemoved(
-          "The behavior that Selection.addRange() merges existing Range and "
-          "the specified Range",
-          M58, "6680566019653632");
+      return "The behavior that Selection.addRange() merges existing Range and "
+             "the specified Range was removed. See "
+             "https://www.chromestatus.com/features/6680566019653632 for more "
+             "details.";
 
     // Features that aren't deprecated don't have a deprecation message.
     default: