This is a testharness.js-based test.
FAIL Comment.before() without any argument. child.before is not a function
FAIL Comment.before() with null as an argument. child.before is not a function
FAIL Comment.before() with undefined as an argument. child.before is not a function
FAIL Comment.before() with the empty string as an argument. child.before is not a function
FAIL Comment.before() with only text as an argument. child.before is not a function
FAIL Comment.before() with only one element as an argument. child.before is not a function
FAIL Comment.before() with one element and text as arguments. child.before is not a function
FAIL Comment.before() with context object itself as the argument. child.before is not a function
FAIL Comment.before() with context object itself and node as the arguments, switching positions. child.before is not a function
FAIL Comment.before() with all siblings of child as arguments. child.before is not a function
FAIL Comment.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. child.before is not a function
FAIL Comment.before() with some siblings of child as arguments; no changes in tree. child.before is not a function
FAIL Comment.before() when pre-insert behaves like prepend. child.before is not a function
FAIL Comment.before() with one sibling of child and text as arguments. child.before is not a function
FAIL Comment.before() on a child without any parent. x.before is not a function
FAIL Element.before() without any argument. child.before is not a function
FAIL Element.before() with null as an argument. child.before is not a function
FAIL Element.before() with undefined as an argument. child.before is not a function
FAIL Element.before() with the empty string as an argument. child.before is not a function
FAIL Element.before() with only text as an argument. child.before is not a function
FAIL Element.before() with only one element as an argument. child.before is not a function
FAIL Element.before() with one element and text as arguments. child.before is not a function
FAIL Element.before() with context object itself as the argument. child.before is not a function
FAIL Element.before() with context object itself and node as the arguments, switching positions. child.before is not a function
FAIL Element.before() with all siblings of child as arguments. child.before is not a function
FAIL Element.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. child.before is not a function
FAIL Element.before() with some siblings of child as arguments; no changes in tree. child.before is not a function
FAIL Element.before() when pre-insert behaves like prepend. child.before is not a function
FAIL Element.before() with one sibling of child and text as arguments. child.before is not a function
FAIL Element.before() on a child without any parent. x.before is not a function
FAIL Text.before() without any argument. child.before is not a function
FAIL Text.before() with null as an argument. child.before is not a function
FAIL Text.before() with undefined as an argument. child.before is not a function
FAIL Text.before() with the empty string as an argument. child.before is not a function
FAIL Text.before() with only text as an argument. child.before is not a function
FAIL Text.before() with only one element as an argument. child.before is not a function
FAIL Text.before() with one element and text as arguments. child.before is not a function
FAIL Text.before() with context object itself as the argument. child.before is not a function
FAIL Text.before() with context object itself and node as the arguments, switching positions. child.before is not a function
FAIL Text.before() with all siblings of child as arguments. child.before is not a function
FAIL Text.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. child.before is not a function
FAIL Text.before() with some siblings of child as arguments; no changes in tree. child.before is not a function
FAIL Text.before() when pre-insert behaves like prepend. child.before is not a function
FAIL Text.before() with one sibling of child and text as arguments. child.before is not a function
FAIL Text.before() on a child without any parent. x.before is not a function
Harness: the test ran to completion.

