diff --git a/src/browser/tests/element/replace_with.html b/src/browser/tests/element/replace_with.html
index 0597b9b16..23172fb93 100644
--- a/src/browser/tests/element/replace_with.html
+++ b/src/browser/tests/element/replace_with.html
@@ -363,3 +363,65 @@
testing.expectEqual(newChild14, parent14.firstChild);
testing.expectEqual(null, oldChild14.parentNode);
+
+
+
+
+
+
+
+
diff --git a/src/browser/webapi/Element.zig b/src/browser/webapi/Element.zig
index 16ebd05ae..f4c16641d 100644
--- a/src/browser/webapi/Element.zig
+++ b/src/browser/webapi/Element.zig
@@ -939,6 +939,12 @@ pub fn replaceWith(self: *Element, nodes: []const Node.NodeOrText, frame: *Frame
continue;
}
+ // A DocumentFragment contributes its children, not itself
+ if (child.is(Node.DocumentFragment)) |_| {
+ try frame.insertAllChildrenBefore(child, parent, ref_node);
+ continue;
+ }
+
if (child._parent) |current_parent| {
frame.removeNode(current_parent, child, .{ .will_be_reconnected = parent_is_connected });
}